仅在JavaScript中的三元运算符中条件为true时分配

时间:2013-02-21 18:02:04

标签: javascript ternary-operator

是否可以在JavaScript中执行此类操作?

max = (max < b) ? b;

换句话说,仅在条件为真时指定值。如果条件为假,则不执行任何操作(无分配)。这可能吗?

10 个答案:

答案 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);