次のようなif/elseステートメントがたくさんあるコードがあります。
var name = "true";
if (name == "true") {
var hasName = 'Y';
} else if (name == "false") {
var hasName = 'N';
};
しかし、これらのステートメントを短くする方法はありますか?何かのようなもの ? "true" : "false"
...
オブジェクトをマップとして使用できます:
var hasName = ({
"true" : "Y",
"false" : "N"
})[name];
また、これは多くのオプションにうまく対応します
var hasName = ({
"true" : "Y",
"false" : "N",
"fileNotFound" : "O"
})[name];
(参照を取得する人々に対するボーナスポイント)
注:真理値を示す変数には、文字列値「true」の代わりに実際のブール値を使用する必要があります。
これを試して
hasName = name ? 'Y' : 'N';
のように試してください
var hasName = 'N';
if (name == "true") {
hasName = 'Y';
}
または、ternary operator
好む
var hasName = (name == "true") ? "Y" : "N" ;
単純にでも試してみることができます
var hasName = (name) ? "Y" : "N" ;
名前にはYes
またはNo
がありますが、iamにはそれが不明です。
If-elseにtwo
条件のみが含まれている場合、ここでのほとんどの回答は正常に機能します。あなたが望むものの多くは、配列を使用することになります。 names
配列の要素に対応するすべての名前には、hasNames
配列に正確に同じインデックスを持つ要素があります。 。次に、これらの4行の問題です。
names = "true";
var names = ["true","false","1","2"];
var hasNames = ["Y","N","true","false"];
var intIndex = names.indexOf(name);
hasName = hasNames[intIndex ];
このメソッドは、オブジェクトとプロパティを使用して Benjaminで図示 として実装することもできます。