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; });