是否可以在JavaScript中执行此类操作?
max = (max < b) ? b;
换句话说,仅在条件为真时指定值。如果条件为假,则不执行任何操作(无分配)。这可能吗?
答案 0 :(得分:62)
不要使用ternary operator,它需要第三个参数。如果您不希望更改max
,则需要将max
重新分配给max = (max < b) ? b : max
。
if-statement更清晰:
if (max < b) max = b;
如果你需要它作为表达式,你可以(ab)使用AND的短路评估:
(max < b) && (max = b)
顺便说一句,如果你想避免重复变量名(或表达式?),你可以使用maximum function:
max = Math.max(max, b);
答案 1 :(得分:11)
具有三元运算符的表达式必须具有两个值,即对于true和false情况。
但是你可以
max = (max < b) ? b : max;
在这种情况下,如果condition为false,则max
的值不会改变。
答案 2 :(得分:5)
如果条件为假,您可以将max
设置为自身。
max = (max < b) ? b : max;
或者您可以尝试使用&&
运算符:
(max < b) && (max = b);
或者为了简化您的代码,只需使用if
。
if(max < v) max = b;
答案 3 :(得分:4)
我认为三元更合适 试试这个
(max < b) ? max = b : '';
答案 4 :(得分:3)
没有特定的运算符不是三元运算符,但您可以像这样使用它:
max = (max < b) ? b : max;
答案 5 :(得分:1)
我认为更好的方法可能是
max = Math.max(max, b)
答案 6 :(得分:1)
您可以执行以下操作:
(max < b) ? max = b : ''
答案 7 :(得分:0)
外观:
(max < b) ? max = b : null;
它将解决,我想您想避免使用冒号,不幸的是,它不会发生
答案 8 :(得分:0)
您可以尝试:
(max < b) && (max = b);
看这个例子:
let max = 10;
let b = 15;
(max < b) && (max = b)// this will be true
console.log("max=", max);
let maxx = 10
let bb = 5;
(maxx < bb) && (maxx = bb)// this will be false
console.log("maxx=", maxx);
答案 9 :(得分:0)
没有ES6的示例,我们可以通过这种方式使用:
let list = [{id: "abc", name: "test1"}, {id: "xyz", name: "test2"}]
let selectedData = {};
list.some((exp) => {
return (
exp.id == "xyz" &&
((selectedData = exp), true)
);
})
console.log(selectedData);