在for循环迭代期间删除数组时会发生什么?

时间:2018-03-20 14:02:52

标签: javascript loops for-loop

例如,

for (i in Cow.array){...}

如果删除CowCow.array,会发生什么?

此外,如果发生错误,我该如何解决?

2 个答案:

答案 0 :(得分:0)

即使这样也不会在错误中返回(到目前为止您使用JavaScript - 请注意最后测试会导致错误)这几乎总是以奇怪的方式结束行为:



let myArr = [1,2,3,4]
let myArr2 = [1,2,3,4]
let myArr3 = [1,2,3,4]

for (let i = 0; i < myArr.length; i++) {
  console.log("test without reomving: " + myArr[i])
}

for (let i = 0; i < myArr.length; i++) {
  console.log("test with removing: " + myArr[i])
  myArr.splice(i, 1);
}

for (let i = 0; i < myArr2.length; i++) {
  console.log("last test: " + myArr[i])
  myArr2 = myArr2.splice(i, 1);
}

for (let i = 0; i < myArr3.length; i++) {
  console.log("very last test: " + myArr[i])
  myArr3 = null
}
&#13;
&#13;
&#13;

我强烈建议不要这样做

答案 1 :(得分:0)

如果您的目标是在循环时修改数组。尽量避免使用它。

如果必须,请使用数组的副本来迭代和修改原始数组。

let myArray = [1, 2, 3, 4, 5]
let copy = myArray
for(let i=0; i<copy.length; i++) {
    //do stuff
    // for example remove number 3
    if(i == 3) {
        myArray.splice(i, 1);
    }
 }