gpt4 book ai didi

javascript - 为什么 0 没有从列表中删除?

转载 作者:数据小太阳 更新时间:2023-10-29 04:26:22 27 4
gpt4 key购买 nike

我正在测试 splice 在遍历数组时如何工作,但不明白为什么 0 留在列表中?

var array = [2, 5, 9, 14, 0, 1, 3, 6, 7];
for (var i = 0; i < array.length; i++) {
if (array[i]%2 == 0) {
array.splice(i,1);
}
}

//0 % 2 == 0 is true, and yet
//array = [5, 9, 0, 1, 3, 7]

最佳答案

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

关于javascript - 为什么 0 没有从列表中删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17554659/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com