投稿者 tel | 2011年11月26日

JavaScriptでinを使った条件文

なんとなく思いついたのでメモ。ある変数に入った値で条件文を作るときに次の式のようになる場合がたまにある。

if(day === 'mon' || day === 'sat' || day === 'sun')

3つくらいならまだいいけど増えてくると条件文がとても長くなってしまう。そこでinを使って次のようにしてみる。

if(day in {'mon':0, 'sat':0, 'sun':0})

少しだけ短くなった。でも実質的に文字列の判定くらいしか使えない上に効率も悪そう。

配列を使うと

if(['mon', 'sat', 'sun'].indexOf(day) >= 0)

こっちのほうがスマートかも。ほんとにたくさんになりそうならswitchを使ったほうがたぶんいい。

switch(day) {
case 'mon':
case 'sat':
case 'sun':

Responses

  1. 配列の場合は
    if(-~[‘mon’, ‘sat’, ‘sun’].indexOf(day))
    とも書けますね。

    正規表現でも書けますよ。
    if(/^(?:mon|sat|sun)$/.test(day))

  2. 正規表現でやるのは思いつかなかったです。


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。