13
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

こんにちは。
いきなりですが、皆さんは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は条件式まで覚えればある程度のプログラムは書けるようになる、と聞いた事がありますが、
自身の頭がいかに硬いかを痛感した方法でした……。

もし宜しければ他に「こんなやり方があるよ!」というのがあれば教えて頂ければありがたいです。

13
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?