for循环删除小陷阱

2020-03-11  本文已影响0人  亦亦嘟嘟

1.场景

顺序删除当前元素

var list = ['a', 'b', 'c', 'd']
for (var i = 0; i < list.length; i++) {
  console.log(list[i])  
  list.splice(i, 1)
}
输出: a, c 并不是去a, b, c, d

2.原因

删除当前的元素,后面的元素就会顶替当前的位置,下标也会随着改变,然而我们的for循环还是在原来的基础上i++,所以就会出现上面的情况

3.解决

var list = ['a', 'b', 'c', 'd']
for (var i = 0; i < list.length; i++) {
  console.log(list[i])  
  list.splice(i, 1)
  i--
}
或者
for (var i = 0; i < list.length; i++) {
  console.log(list[i])  
  list.splice(i--, 1)
}
输出: a, b, c, d

在for循环里面i--,使它恢复到原来的位置就可有实现顺序删除元素

上一篇下一篇

猜你喜欢

热点阅读