質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

8回答

4465閲覧

jsのif(a==1||a==2||a==5)を短く書きたいです。

rainbowsix

総合スコア102

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

7クリップ

投稿2017/06/20 09:04

js

1if(a==1||a==2||a==5||a==6||a==7||a==8||a==9||a==10||a==11){ 2}else{ 3}

上記のようなif文を短く書きたいですが

if(a==1,2,5,6,7・・・){
}else{
}
のような書き方があれば教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答8

0

JavaScript

1if(a==1||a==2||a==5||a==6||a==7||a==8||a==9||a==10||a==11){

短く書く事も大切ですが、拡張性を意識して書いてみました。

(2017/06/20 18:19追記)
Array#includes が要件に最も近そうですね。

switch 文

JavaScript

1switch (a) { 2 case 1: 3 case 2: 4 case 5: 5 case 6: 6 case 7: 7 case 8: 8 case 9: 9 case 10: 10 case 11: 11 console.log('処理'); 12}

for 文

JavaScript

1for (var i = 0, array = [1,2,5,6,7,8,9,10,11], len = array.length; i < len; ++i) { 2 if (a === array[i]) { 3 console.log('処理'); 4 } 5}

Array#some

JavaScript

1if ([1,2,5,6,7,8,9,10,11].some(v => a === v)) { 2 console.log('処理'); 3}

Array#includes

NaN 値も照合可能な新しいメソッドです。IE11 対策に Polyfill を適用しましょう。

JavaScript

1if ([1,2,5,6,7,8,9,10,11].includes(a)) { 2 console.log('処理'); 3}

Re: rainbowsix さん

投稿2017/06/20 09:12

編集2017/06/20 09:22
think49

総合スコア18164

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

下記は如何でしょうか?

JavaScript

1var b = [1, 2, 5, 6, 7, 8, 9, 10, 11]; 2if (b.indexOf(a) > -1) { 3 // hitした時 4} else { 5 // hitしない時 6}

Array.prototype.indexOf()が、配列に引数が最初にヒットするキーを返しますので、それを利用します。
意図した物と違いましたら、すみません。

投稿2017/06/20 09:15

rs_dev

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

javascript

1MASK = "_11001111111" 2 3a = 2; 4if (MASK[a] == '1') { 5 console.log("true"); 6} else { 7 console.log("false"); 8}

実行結果

$ node a.js true

投稿2017/06/20 22:33

編集2017/06/21 15:15
katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

think49

2017/06/21 01:19

変数名がtypoしてますね…(ASK -> MASK)。 「短く書きたい」の条件的には変数を使わない選択肢もありかもしれません。 if ('_11001111111'[a] === '1')
KazuhiroHatano

2017/06/21 02:51

bucket sort的な発想、面白いですね
katoy

2017/06/21 15:23

* ASK -> MASK に修正しました。 * 最初は、shoko1 さんの回答のビット操作の案も考えたのです。 しかし 整数のビット数のことを考え、文字列での方法にしました。 また "_123" のように MASK を定義すれば, a が 1 なら A処理、a が 2 なら B処理のように 3 つ以上の分岐へも対応が可能になります。
takito

2017/06/22 02:19

この考え方すごく好きです ただ、30まであって17あたりの条件を変えたい、って場合はちょっと不便ですね
katoy

2017/06/22 15:05

10 文字ずつの文字列を3つ連結して MASK 文字列をつくるように書けば、17 番目が 0 なのか 1 なのかの判別は、多少はしやすくなると思います。
guest

0

単に if 文を短かくしたいんだったら関数にするとか。
外してる気もしますが(汗

JavaScript

1function is_target(a) { 2 if(a==1) return true; 3 if(a==2) return true; 4 if(a==5) return true; 5 if(a==6) return true; 6 if(a==7) return true; 7 if(a==8) return true; 8 if(a==9) return true; 9 if(a==10) return true; 10 if(a==11) return true; 11 return false; 12} 13 14if (is_target(a)) { 15 // 該当するときの処理 16}else{ 17 // 該当しないときの処理 18}

投稿2017/06/20 10:34

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

vga640x480

2017/06/28 01:13

賛成:どうして「短くしたい」のかわからないが「読みやすくしたい」意図と推測。低評価を付けている方もいるが「判定関数として独立させる」アイデアがベスト。
guest

0

ベストアンサー

jQueryが走ってるならinArrayがあります

javascript

1if($.inArray(a,[1,2,5,6,7,8,9,10,11]) >= 0){ 2}

なければindexOf

javascript

1if([1,2,5,6,7,8,9,10,11].indexOf(a) >= 0){ 2}

投稿2017/06/20 09:24

編集2017/06/20 09:26
KazuhiroHatano

総合スコア7804

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

someはどうでしょうか?

javascript

1var a=1; 2if([1,2,5].some(function(i){return i===a})){ 3 console.log(1); 4} 5if([2,3,5].some(function(i){return i===a})){ 6 console.log(2); 7} 8

投稿2017/06/20 09:15

yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ややみじかく。(11111110011b = 0x7F3)

JavaScript

1if((1<<a-1)&0x7F3){ 2}else{ 3}

↓の方が処理がわかりやすいかも。

JavaScript

1if((0x7F3>>a-1)&1){ 2}else{ 3}

投稿2017/06/20 10:32

編集2017/06/22 04:39
shoko1

総合スコア372

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

以下の回答は間違いですので参照しないで下さい。

javascript

1if(a in [1,2,5,6,7,8,9,10,11]){ 2}else{ 3}

で行けるかと思います。

投稿2017/06/20 09:06

編集2017/06/20 09:20
mattn

総合スコア5030

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

think49

2017/06/20 09:14

このコードは var a = 11; の場合に成立しません。 in 演算子は「プロパティ名」を確認する演算子であって、「プロパティ値」を確認しません。
mattn

2017/06/20 09:16

失礼しました。あとで消しますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問