数组坍塌:
在对数组进行操作的时候,可能会使数组的长度发生改变,同时操作的数组那个项的下一个索引下标会被跳过,从而造成数组中的某项会被跳过,这样的现象就叫做数组的坍塌现象。 例如: 循环判断数组中的每一项,如果有重复值就删除。
var arr = [1, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9];
// 遍历
for (var i = 0; i < arr.length; i++) {
// 判断
for(var j=i+1;j<arr.length;j++)
if (arr[i] === arr[j]) {
arr.splice(j, 1);
}
}
console.log(arr);

解决办法:
在对数组某项操作之后,手动将索引值-1,保持每一项都被遍历
var arr = [1, 1, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9];
// 遍历
for (var i = 0; i < arr.length; i++) {
// 判断
for(var j=i+1;j<arr.length;j++)
if (arr[i] === arr[j]) {
arr.splice(j, 1);
i--; // 将索引值-1,保持每项都被遍历
}
}
console.log(arr);
