実現したいこと
Javascriptにて、取得した配列の要素によって条件分岐するコードを、switchを使用して記述しようと考えています。
javascript
1const array = ['a', 'c',/*略*/]; 2switch (式) { 3 case /*リストにaが含まれている場合*/: 4 switch (式) { 5 case /*リストにcが含まれている場合*/: 6 //処理 7 break; 8 case /*リストにdが含まれている場合*/: 9 //処理 10 break; 11 } 12 break; 13 case /*リストにbが含まれている場合*/: 14 //処理 15 break; 16}
おおよそ以上のような形のコードは記述できましたが、肝心の式と値がわかりません。
考えたこと
式に以下の2つのどちらかを使用すればいいのではないかと考えました。
array.includes(); array.some();
arrayにwordが存在する時にwordの値はaである場合、処理を行う
といった意図のコードを記述したいと考え、
const array = ['a',/*略*/]; switch (array.some(word) == true) { case word = 'a': //処理 break; //略 }
といった記述をしましたが、エラーが出ました。
アドバイスをいただきたいです。
よろしくお願いいたします。
switchの必然性がわかりません。
if文ではいけない理由がありますか。
どうしても、switch(true)を使いたいのですか。
https://qiita.com/t_uda/items/1969e09a970d71e4cfd6
ちょっと、お望みの内容が伝わっていない気がします。
コードを書く前に仕様を再確認してみてはいかがでしょうか?
わかりました。
switchで書こうと思った理由は、ifよりすっきりと書けそうだと思ったからで、それ以上の理由がありません。
switch は特定の値 (配列の i 番目の要素など) に応じて複数の分岐に分ける場合に使うのが普通です。
配列がある値を含むかどうか (結果は true または false) で分岐するには、
switch (array.includes(word)) {
case true:
...
で書けないことはありませんが、if を使ったほうがすっきりすると思います。
> ifよりすっきりと書けそうだと思ったからで
「書けそう」ではなくて、「書ける」と確信するまで switch 文の仕様理解に努めてください。
・リファレンスを読む
・テストコードを繰り返し書く
というようなswitch文の挙動理解にかける時間が足りてないのだと思います。
コードはイメージや感覚で書けるようにはなりません。
回答3件
あなたの回答
tips
プレビュー