web-dev-qa-db-fra.com

Raccourci pour déclaration if-else

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" ...

30
Meek

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é.

18
Benjamin Gruenbaum

Essaye ça

hasName = name ? 'Y' : 'N';
14
Eswara Reddy

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.

4
Gautam3164

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 .

3
Abijeet Patro