数组塌陷
当你删除数组内的数据的时候,从删除位置以后的数据, 会向前递进索引,我们管这个行为叫做数组塌陷。
当你删除数组内的数据以后, 还需要继续遍历数组进行操作的时候, 会出现问题
解决方法:
方案1: 每次删除完毕以后, 退一步
方案2: 倒着循环数组
我们要删除数组内为2的倍数的数据
// 方案1:
for (var i = 0; i < arr.length; i++) { //遍历数组
if (arr[i] % 2 === 0) { //判断是不是2的倍数
arr.splice(i, 1) //从索引为i的位置删除一个
i--
}
}
console.log('删除之后 : ', arr)
// 方案2:
for (var i = arr.length - 1; i >= 0; i--) { // 倒着遍历数组
if (arr[i] % 2 === 1) { //判断是不是2的倍数
arr.splice(i, 1) //从索引为i的位置删除一个
}
}
console.log('删除之后 : ', arr)
没经过处理的结果:
处理后的结果