数组塌陷
使用splice或pop会影响数组长度,形成循环次数的问题
pop
例子:pop从后删除了数据,那么影响了数组长度,i的值缩小
var arr = [1, 2, 3, 4, 5, 6, 7];for (var i = 0; i < arr.length; i++) {arr.pop(arr[i]);console.log(arr, i);}console.log("塌陷结果", arr); //[1, 2, 3] /*循环过程i=0 [1, 2, 3, 4, 5, 6] 0i=1 [1, 2, 3, 4, 5] 1i=2 [1, 2, 3, 4] 2i=3 [1, 2, 3] 3 */
pop解决:
提前用变量存放数组长度
var arr = [1, 2, 3, 4, 5, 6, 7];var len = arr.length;for (var i = 0; i < len; i++) {arr.pop(arr[i]);console.log(arr, i);}console.log("结果", arr); //[]
过程: