0はスキップされています
反復処理中に配列を変更 (変更) しています。これはプログラミングの禁止事項です。
通り抜けましょう...
i = 0 および 2 は偶数であり、スプライスされます。配列は [5, 9, 14, 0, 1, 3, 6, 7] になります。
i = 1 で、現在はインデックス 0 にある 5 もチェックしていませんでした...現在、奇数の 9 をチェックしています。
i = 2 および 14 は偶数であり、スプライスされます。配列は [5, 9, 0, 1, 3, 6, 7] になります。
i = 3 および 0 はスキップされます (現在、0 はインデックス 2 にあるため)、1 は奇数、問題ありません
i = 4 は奇数です
i = 5 は偶数で接合されます
i = 6 は奇数です
あなたが本当に欲しいのはこれです...
Array.prototype.filter = function(func) {
var result = new Array();
for (var i = 0; i < this.length; ++i)
if (func(this[i]))
result.push(this[i]);
return result;
}
values = [2, 5, 9, 14, 0, 1, 3, 6, 7];
odd_only = values.filter(function(x) { x % 2 != 0; });