gpt4 book ai didi

javascript - 为什么我的解决方案有效而其他解决方案无效?

转载 作者:搜寻专家 更新时间:2023-11-01 04:54:01 24 4
gpt4 key购买 nike

如果您注意到 for 循环的结果从索引 0 开始并且向上计数并没有从数组中取出数字 23。

使用 JavaScript Loop through evenArray 删除所有不偶数的值

var evenArray = [1,2,3,6,22,98,45,23,22,12];
for (var i = evenArray.length - 1; i >= 0; i--) {
if(evenArray[i] % 2 != 0){
evenArray.splice(i, 1);
}
};
console.log(evenArray);

//输出为 2, 6, 22, 98, 22, 12;

var evenArray = [1,2,3,6,22,98,45,23,22,12];
for (var i = 0; i < evenArray.length; i++) {
if(evenArray[i] % 2 != 0){
evenArray.splice(i, 1);
}
};

console.log(evenArray);

//输出为[2, 6, 22, 98, 23, 22, 12];

最佳答案

当您从数组中拼接一个数字时,数组中该点之后的所有值都会向左移动。

在第二种方法中,索引 6 处的值为 45。你发现它很奇怪,所以你拼接了。现在 23、22 和 12 移动了,因此 23 现在位于索引 6。但是由于您正在向前迭代,您的 i++ 将您移动到索引 7,有效地跳过了 23,这是为什么结果是 23。

当你向后迭代时,你可以避免这个问题,因为所有被移动的数字都已经被执行了。

关于javascript - 为什么我的解决方案有效而其他解决方案无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31060065/

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