什么是数组塌陷
数组塌陷就是,一个数组在进行删除数据单元操作的时候,删除掉这个单元之后,后面的数据单元会自动的补充的这个位置上来,造成数组长度的减少,这种情况被称之为数组塌陷

var arr1 = [1,1,1,3,2,2,3,3];
arr1.sort();
for(var j=0;j<arr1.length-1;j++){
if(arr1[j] === arr1[j+1]){
arr1.splice(j+1,1);
}
}
console.log(arr1);
这段代码是我们在使用 数组名称.sort(); 先对数组进行排序然后使用 数组名称.splice(); 删除重复的数据单元 搭配起来对数组进行去重


为了解决这个问题,我们可以在判断后对j进行-1
var arr1 = [1,1,1,3,2,2,3,3];
arr1.sort();
for(var j=0;j<arr1.length-1;j++){
if(arr1[j] == arr1[j+1]){
arr1.splice(j+1,1);
j--;
}
}
console.log(arr1);
此时我们再来看,最终的结果,

所以再对数组进行去重的时候,或者是对数组进行循环遍历并删除数据单元的时候,一定要注意数组塌陷带来的影响
上边只提供了一种 -- 的方案,还有一种解决方案,就是从后向前便利数组
var arr1 = [1,1,1,3,2,2,3,3];
arr1.sort();
for(var j=arr1.length-1;j>0;j--){
if(arr1[j] == arr1[j-1]){
arr1.splice(j-1,1);
}
}
console.log(arr1);
这样也可以解决这个问题,实际应用中,看情况而定
由于刚入行,以上内容并不详细,在我学习更加深入之后会再进行补充,谢谢观看。