数组塌陷的原理和解决方法

2,409 阅读1分钟

先来说一下什么是数组塌陷,数组塌陷实际上就是将一摞砖中的其中一块砖给抽掉,你会发现被抽掉的上部分砖会坍塌下来来填补被抽掉的空缺,在这里被抽掉的砖头你可以理解为删掉的数组元素。举个例子:

var arry = [1,2,3,4];
for( var i = 0 ; i < arry.length ; i++){
    arry.splice(i,1);
}
console.log(arry);//此时的结果为2,4

为什么我循环遍历删除之后还剩余一2和4呢,不应该是空吗,这就是数组塌陷,当删除第一个数组元素之后,原本的第二个数组元素会填补第一个数组元素的空缺,也就是说此时第二个元素的下标已经变成了0,然而第一次的循环遍历已经遍历过下标为0的数组元素了,于是原本下标为1的数组元素变成了漏网之鱼,既然已经知道了塌陷的原因,那该如何来处理这个问题呢,其实很简单,既然数组整体往前挪了一个单位,那我们就想办法给他补回来

var arry = [1,2,3,4];
for( var i = 0 ; i < arry.length ; i++){
    arry.splice(i,1);
    i--;   
}
console.log(arry);

方法二

既然从下面拿会塌陷,那咱们可以从上面开始取,也就是倒着循环遍历删除

var arry = [1,2,3,4];
for( var i = arry.length-1 ; i >= 0  ; i--){
    arry.splice(i,1);   
}
console.log(arry);