こんにちは。
いきなりですが、皆さんはswitch文を使う機会は多いでしょうか?
私はJavaScript(以下JS)を学び始めた頃に、if文よりも一度に多くの「もしも」が書けるんだ! と感動し、
それ以降現場でもよく使う事が多くなったのですが、ふとある時に躓いたケースがありました。
一度に複数の式で条件の判定をしたい!
例えば、フォームに入力された複数の回答を条件に処理を振り分けたいと思います。
思考が単純な私は最初、以下のようにコードを書いてみました。
const A = // 項目1の回答;
const B = // 項目2の回答;
switch(A,B) {
case 'C, D':
// 回答の値が「C, D」だった場合の処理
break;
}
……はい、動きませんね!(ここでは省略しておりますが、defaultの結果が返ってきます)
switch文の冒頭の括弧に入れられる式は1つだけです。
カンマを入れれば複数判定してくれるだろう……という甘い考えは通じません。
▼ご参考にMDNさんのリンクを載せておきます▼
では、どのように工夫すれば複数の式でも成り立つのか?
やり方は様々あるかと思いますが、私が初めて知った時に目から鱗が落ちたのはこちらです。
const A = // 項目1の回答;
const B = // 項目2の回答;
// 2つの値を1つの変数にまとめる。
let AB = A + ', ' + B;
switch(AB) {
case 'C, D':
// 回答の値が「C, D」だった場合の処理
break;
}
2つの式を1つの変数にまとめてしまうんですね!
そうすれば式が1つという扱いになり、ちゃんと動くようになります。
JSは条件式まで覚えればある程度のプログラムは書けるようになる、と聞いた事がありますが、
自身の頭がいかに硬いかを痛感した方法でした……。
もし宜しければ他に「こんなやり方があるよ!」というのがあれば教えて頂ければありがたいです。