ti-enxame.com

Atribuir apenas se a condição for verdadeira no operador ternário em JavaScript

É possível fazer algo assim em JavaScript?

max = (max < b) ? b;

Em outras palavras, atribua valor apenas se a condição for verdadeira. Se a condição for falsa, não faça nada (sem atribuição). Isso é possível?

38
codiac

Não use o operador ternário então, ele requer um terceiro argumento. Você precisaria reatribuir max para max se não quiser que ele mude (max = (max < b) ? b : max).

Uma declaração if é muito mais clara:

if (max < b) max = b;

E se você precisar que seja uma expressão, poderá (ab) usar a avaliação de curto-circuito de E :

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

Btw, se você quiser evitar repetir nomes de variáveis ​​(ou expressões?), Poderá usar o função máxima :

max = Math.max(max, b);
70
Bergi

Uma expressão com operador ternário deve possui ambos os valores, ou seja, para os casos verdadeiro e falso.

Você pode, no entanto

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

neste caso, se a condição for falsa, o valor de max não será alterado.

11
marekful

Você pode apenas definir max para si mesmo se a condição for falsa.

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

Ou você pode tentar usar o && operador:

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

Ou, para manter seu código simples, basta usar um if.

if(max < v) max = b;
5
Rocket Hazmat

Eu acho que ternário é mais adequado, tente isso

(max < b) ? max = b : '';
4
Aditya

Não há um operador específico que não seja o operador ternário, mas você pode usá-lo assim:

max = (max < b) ? b : max;
3
Charlie Kilian

Eu acho que uma abordagem melhor poderia ser

max = Math.max(max, b)
1
dpolicastro

veja:

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

vai dar certo, acho que você quer evitar usar dois pontos, infelizmente isso não vai acontecer

0
Theristes Gomes