2017-09-18 6 views
1

これはおそらくかなり簡単ですが、私はまだ答えを見つけることに成功していません。とにかく、私がやりたいことは、ある値を他のグループと比較して、それらのどれかと一致する場合にスクリプトを実行することです。ここでは、私がやりたい冗長バージョンがありますが、これはうまくいきますが、これを達成するために賢く、あまり控えめな方法があると仮定していますか?if文で他の多くの人と同じ値を比較する

function updatePosition(e) { 
    if((e.target.innerHTML == 1) || (e.target.innerHTML == 4) || 
     (e.target.innerHTML == 7)) { 
     console.log(e.target.innerHTML) 
    } 
} 
+2

を取得します 'innerHTML'プロパティが文字列であるので、あなたは' indexOf'ソリューションを使用する番号に変換する必要がありますif([1,4,7] .indexOf(+ e.target.innerHTML)!== -1) 'リンクされた重複:単項 '+'演算子は、値を数値に変換します。 – Ryan

+0

ちょっと@ライアン! eターゲットの正面には何がありますか? – Argee

+0

@Argee:私のコメントの半分以上は、プラスが – Ryan

答えて

-1

アレイ内にすべての有効な比較を保存できます。次に、Array#Find()を使用して一致する値を取得できます。一致する値がない場合、あなたはundefined

function updatePosition(num) { 
 
    let validNumbers = [1,4,7]; 
 
    console.log(validNumbers.find(valid => valid === num)); 
 
} 
 

 
updatePosition(4); 
 
updatePosition(9);

+0

'include'や' indexOf'を使うときに 'find'を使う理由は?これは、質問のような真実度の値として使用する場合は、値 '0'を破ります。 – Ryan

+0

@ Ryan OPは 'e.target.innerHTML'を比較しています。彼が見つけたら、 'console.log()'の中で 'e.target.innerHTML'を使います。 'find()'を使うと、OPが値を見つけたら直接使用することができます。 'includes'や' indexOf'は彼がそれを見つけたことを伝えます。 – Weedoze

関連する問題