我正在尝试创建一个带有数组的函数,并返回奇数前带偶数的数组.我想我会遍历数组并用模数检查每个数字的可分性.如果它是偶数,我将该数字移到阵列的前面并继续.
我已经删除了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;
};
Run Code Online (Sandbox Code Playgroud)
发生最大堆栈错误.
因为unshift向数组添加了一个元素,从而增加了它length.此外,一旦unshift将元素添加到数组的开头,则下A[x]一个元素与前一个元素相同,因为所有元素都向右移动,包括x.所以循环永远不会完成,因为索引x永远不会增加length.
如果您需要添加元素的数组,通过它你是一个迭代循环,这是更好地做push一个循环,从向下计数length到0.这样,循环将永远不会遍历添加的元素,并且它将迭代的元素将不会移动.
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |