J'ai du code avec beaucoup de déclarations if/else similaires à ceci:
var name = "true";
if (name == "true") {
var hasName = 'Y';
} else if (name == "false") {
var hasName = 'N';
};
Mais existe-t-il un moyen de raccourcir ces déclarations? Quelque chose comme ? "true" : "false"
...
En utilisant le ternaire :?
opérateur [spec].
var hasName = (name === 'true') ? 'Y' :'N';
L'opérateur ternaire nous permet d'écrire un raccourci if..else
déclarations exactement comme vous le souhaitez.
Ça ressemble à:
(name === 'true')
- notre condition
?
- l'opérateur ternaire lui-même
'Y'
- le résultat si la condition est vraie
'N'
- le résultat si la condition est évaluée à false
Donc en bref (question)?(result if true):(result is false)
, comme vous pouvez le voir - il retourne la valeur de l'expression pour que nous puissions simplement l'affecter à une variable, comme dans l'exemple ci-dessus.
Vous pouvez utiliser un objet comme une carte:
var hasName = ({
"true" : "Y",
"false" : "N"
})[name];
Cela varie également pour de nombreuses options
var hasName = ({
"true" : "Y",
"false" : "N",
"fileNotFound" : "O"
})[name];
(Point bonus pour les personnes ayant obtenu la référence)
Remarque: vous devez utiliser les valeurs booléennes réelles au lieu de la valeur de chaîne "true" pour vos variables indiquant les valeurs de vérité.
Essaye ça
hasName = name ? 'Y' : 'N';
Essayez comme
var hasName = 'N';
if (name == "true") {
hasName = 'Y';
}
Ou même essayer avec ternary operator
comme
var hasName = (name == "true") ? "Y" : "N" ;
Même simplement, vous pouvez essayer comme
var hasName = (name) ? "Y" : "N" ;
Puisque name a soit Yes
ou No
, mais je ne suis pas sûr de le savoir.
La plupart des réponses ici fonctionneront bien si vous n'avez que two
conditions dans votre if-else. Pour plus qui est ce que vous voulez, je suppose, vous utiliserez des tableaux. Chaque élément correspondant aux noms dans le tableau names
aura un élément dans le tableau hasNames
avec exactement le même index . Ensuite, il s’agit de ces quatre lignes.
names = "true";
var names = ["true","false","1","2"];
var hasNames = ["Y","N","true","false"];
var intIndex = names.indexOf(name);
hasName = hasNames[intIndex ];
Cette méthode pourrait également être implémentée en utilisant Objets et propriétés comme illustré par Benjamin .