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--,使它恢复到原来的位置就可有实现顺序删除元素