gpt4 book ai didi

Javascript:Unshift() 导致无限循环,但不明白为什么

转载 作者:行者123 更新时间:2023-11-29 16:33:05 26 4
gpt4 key购买 nike

我正在尝试创建一个函数,它接受一个数组并返回偶数在奇数之前的数组。我想我应该遍历数组并用模检查每个数字的整除性。如果它是偶数,我会将该数字移到数组的前面并继续。

我已经删除了 unshift 来记录它的迭代,所以我知道问题不在于我的循环。

/// A = [3,5,6,3,4,2,1]

var sortArrayByParity = function(A) {
for (var x =0; x< A.length;x++) {
if (A[x] % 2 == 0) {
A.unshift(A[x])
}
}
return A;
};

发生最大堆栈错误。

最佳答案

因为unshift向数组添加了一个元素,从而增加了它的长度。此外,一旦 unshift 将一个元素添加到数组的开头,下一个 A[x] 与前一个相同,因为所有元素都会移动到数组的开头。对,包括x。因此循环永远不会结束,因为索引x永远不会达到不断增加的长度

如果您需要向使用循环迭代的数组添加元素,最好在从 length 开始向下计数的循环中使用 push 来完成此操作到0。这样,循环将永远不会迭代添加的元素,并且它将迭代的元素也不会移动。

关于Javascript:Unshift() 导致无限循环,但不明白为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53898315/

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