2016-05-17 8 views
-2

私はマップやフィルターなどを練習する際にループを使用しないようにしています。マップを使って真偽をチェックしても動作しません

function checking(array,item){ 
var temporary=true; 
array.map(function(x){ 
if (x!=item){ 
    temporary=false; 
} 

}); 
return temporary; 
} 

checking([1, 2, 3], 2); 
+0

あなたのコードをインデント/フォーマットしてください。コールバックから何も返さず、結果を何もせずに 'map'を使っているのはなぜですか?それは 'forEach'の意味です。入力と等しくなければ、各要素ごとに 'temporary'を' false'に設定するのはなぜですか?なぜ、デバッガでコードをステップ実行するだけで問題を把握できなかったのですか?あなたが 'map'と' filter'を勉強しているなら、 'some'をどうやって見逃しましたか? –

答えて

0

2が配列である場合は、チェックされていないが、配列は2

とは異なる値を持つ場合、あなたはあなたが天気をそこにあれば例えばチェックする必要がありますチェックしているので:

let temporary=false; 
array.map(function(x){ 
if (x==item){ 
    temporary=true; 
} 
+0

いいえ2が配列内にあるかどうかを確認します。マップ関数のためのものです。配列自体の要素ではなく、配列の要素を調べるためのものです。 – learningcoding

3

Array#someを使用しないと、ブール値をチェックして返すのに最適です。そして、コールバックがtrueの場合、短絡回路が最適です。

function checking(array, item) { \t \t 
 
    return array.some(function (x) { 
 
     return x === item; 
 
    }); 
 
} 
 

 
document.write(checking([1, 2, 3], 2));

関連する問題