javascriptのswitch文で一瞬躓いたところ
javaScriptでコーティングする際、switch文と正規表現を組み合わせたい。そう思うことってあると思うんです。
その際、
var body = "遅刻するので休みます。";
switch(body) {
case /遅刻/.test(body):
console.log("遅刻");
break;
case /早退/.test(body):
console.log("早退");
break;
default:
console.log("なんか書いてよ");
}
// 結果:なんか書いてよ
// 本当は遅刻が出力されてほしい。
と書くと認識してくれません。
ではどうすればいいのかというと
var body = "遅刻するので休みます。";
switch(true) {
case /遅刻/.test(body): // test()メソッドがboolを返すため。
console.log("遅刻");
break;
case /早退/.test(body):
console.log("早退");
break;
default:
console.log("なんか書いてよ");
}
// 結果:遅刻
// 以降続く
非常に初歩的なものですが忘れたら良くないのでメモ代わりに書きます。