function bouncer(arr) {
var array = [false, null, 0, NaN, undefined, ""];
var result = [];
for (var i = 0; i < arr.length; i++) {
if (array.indexOf(arr[i]) === -1) {
result.push(arr[i]);
}
}
return result;
}
ex : bouncer([7, "ate", "", false, 9]) should return [7, "ate", 9].
みなさん、こんにちは、 は、私は、配列の入力にあるすべての誤った値を削除しようとしていますが、私はbouncer([false,null, 0, NaN, undefined, ""]);
を実行したとき、私は空の配列を期待していながら、何とかのために私は、戻り値として[NaN]
を取得します。関数が誤った値を返す理由を知っていますか?どのようにindexOfメソッドが誤った値を返すのですか?
'NaN'は自分自身に等しくないを:あなたの
if(...)
にarr[i] === arr[i]
を追加することができますあなたの問題を解決するために。 – tkausl
これは重複した質問です:http://stackoverflow.com/questions/32906887/remove-all-falsy-values-from-an-array – HenryDev
実際には 'if(!! arr [i])'はNaNでも有効です –