Assign only if condition is true in ternary operator in JavaScript

后端 未结 9 1813
小鲜肉
小鲜肉 2020-12-02 22:08

Is it possible to do something like this in JavaScript?

max = (max < b) ? b;

In other words, assign value only if the condition is true.

相关标签:
9条回答
  • 2020-12-02 22:55

    An expression with ternary operator must have both values, i.e. for both the true and false cases.

    You can however

    max = (max < b) ? b : max;
    

    in this case, if condition is false, value of max will not change.

    0 讨论(0)
  • 2020-12-02 22:56

    Don't use the ternary operator then, it requires a third argument. You would need to reassign max to max if you don't want it to change (max = (max < b) ? b : max).

    An if-statement is much more clear:

    if (max < b) max = b;
    

    And if you need it to be an expression, you can (ab)use the short-circuit-evaluation of AND:

    (max < b) && (max = b)
    

    Btw, if you want to avoid repeating variable names (or expressions?), you could use the maximum function:

    max = Math.max(max, b);
    
    0 讨论(0)
  • 2020-12-02 23:00

    You can just set max to itself if the condition is false.

    max = (max < b) ? b : max;
    

    Or you can try using the && operator:

    (max < b) && (max = b);
    

    Or to keep your code simple, just use an if.

    if(max < v) max = b;
    
    0 讨论(0)
提交回复
热议问题