:なぜ私の配列の最後の要素はスプライシングではなく、未定義になっていますか?
=> ['kept','kept']
しかし、その代わりに、私はこのを得続ける:
function keep(array, keeper) {
//This will return an array of undefined's and 'kept's
// =>[ 'kept', undefined, 'kept', undefined, undefined ]
matchingNumbers = array.map(function matching(element){
if (element === keeper) {
return element;
}
});
//Eliminate all undefined's from the matchingNumbers array
matchingLength = matchingNumbers.length;
for (var i = 1; i < matchingLength; i++) {
if(matchingNumbers[i] === undefined) {
(matchingNumbers.splice(i, 1));
}
}
return matchingNumbers;
}
keep(['kept', 'thirty', 'kept', 2, 1], 'kept')
問題は、私はこのをしたい
ということです私は、for-loopでmatchingNumbersのすべての未定義をスプライスしようとしています。だからなぜlaがあるのですか?残りは未定義ですか?
あなた 'i'は、各反復の後にインクリメントされますが、あなたの配列が同時に要素を失っているので、' i'は必ずしも意味しませんインクリメント"次の要素"。 – Xufox
最初に、配列はインデックス0から始まります。次に、[Array#filter](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) –
を見てください上記のリンクにあるPolyfillを使用すると、コードをどのように記述した方がいいでしょうか?p –