web-dev-qa-db-fra.com

Attribuer uniquement si la condition est vraie dans l'opérateur ternaire en JavaScript

Est-il possible de faire quelque chose comme ça en JavaScript?

max = (max < b) ? b;

En d'autres termes, attribuez une valeur uniquement si la condition est vraie. Si la condition est fausse, ne faites rien (aucune affectation). Est-ce possible?

38
codiac

N'utilisez pas opérateur ternaire alors, cela nécessite un troisième argument. Vous devrez réaffecter max à max si vous ne voulez pas qu'il change (max = (max < b) ? b : max).

Un if-statement est beaucoup plus clair:

if (max < b) max = b;

Et si vous en avez besoin pour être une expression, vous pouvez (ab) utiliser l'évaluation en court-circuit de ET :

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

Btw, si vous voulez éviter de répéter des noms de variables (ou des expressions?), Vous pouvez utiliser la fonction maximum :

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

Une expression avec opérateur ternaire doit a les deux valeurs, c'est-à-dire pour les cas vrai et faux.

Vous pouvez cependant

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

dans ce cas, si la condition est fausse, la valeur de max ne changera pas.

11
marekful

Vous pouvez simplement définir max sur lui-même si la condition est fausse.

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

Ou vous pouvez essayer d'utiliser le && opérateur:

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

Ou pour garder votre code simple, utilisez simplement un if.

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

Je pense que le ternaire est plus approprié, essayez ceci

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

Il n'y a pas d'opérateur spécifique qui n'est pas l'opérateur ternaire, mais vous pouvez l'utiliser comme ceci:

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

Je pense qu'une meilleure approche pourrait être

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

regardez:

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

ça va marcher, je pense que tu veux éviter d'utiliser un colon, malheureusement, ça n'arrivera pas

0
Theristes Gomes