switch文は通常、文字や数字で分岐をさせることが多いですが、実は条件式を入れることも可能です。
私の場合、正規表現を動的に変えたいケースがあり、検索したところ似たケースがありました。
【JavaScript】正規表現(match)をswitch文で使う方法
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var str; // 比較対象の文字列 switch (true) { case /abc/.test(str): console.log('strには「abc」が含まれています'); break; case /123/.test(str): console.log('strには「123」が含まれています'); break; default: console.log('マッチしませんでした。'); break; } |
上記は正規表現を使っていますが、要はswitch(true)を使えば、caseにはif文に相当する処理を書くことができます。
PHPでもあるようで頻繁には使いませんが、まれに必要なケースがでてくるのかなあと思います。
その他参考リンク
switch( true )な使い方
switch(true) イディオム考察
どうやらあまり推奨される使い方ではないようですね・・。