配列をループし、条件の各要素をテストする関数を書いています。 falseの場合、要素は削除されます。 trueの場合、関数は配列の残りの部分を返します。ここで配列の要素がテストに合格していません
は私のコードです:
function dropElements(arr, func) {
// Loop through the array
for(var i = 0; i < arr.length; i++){
// if the current element passes the test, return the rest of the array
if (func(arr[i])){
return arr;
// otherwise remove the element
} else {
arr.shift();
}
}
// if no conditions were met, return empty array
return arr;
}
ループは、I = 1に達したとき、私たちはARR持っている[1] 2以来2
を=> = 3ではない、私はなぜ理解していませんそれは落とされません。
だから、なぜ代わりに[3,4]の次の呼び出し
dropElements([1,2,3,4], function(n) {return n >= 3; });
リターン[2,3,4]?
ありがとうございました。
「for」を「while」に変更し、while(arr.length){... 'を実行してからif(func(arr [0])){...}。あなたのコードが動作するように、 '0'よりも大きなインデックスにアクセスする状況はありません。 –