首页 > 建站教程 > JS、jQ、TS >  js循环删除数组中的重复项的问题正文

js循环删除数组中的重复项的问题

假设有下面的数组,我想通过循环将里面的1删除掉:
var arr = [1,1,1,1,2,2,2,2];
for(var i=0; i<arr.length; i++){
    if(arr[i] === 1){
        arr.splice(i,1);
    }
}
最后得到的结果却是:[1, 1, 2, 2, 2, 2],1并没有删除干净?!

其实原因很简单,当删除了第一个1,这个时候数组的第0个仍然是1,可是i已经++变成了1,从数组第二个开始删除了,以此类推,所以,总是隔一个删除,这时只要将i++再变成0,从数组第一个重新开始遍历,也就是i变成-1即可,所以代码修改如下:
var arr = [1,1,1,1,2,2,2,2];
for(var i=0; i<arr.length; i++){
    if(arr[i] === 1){
        arr.splice(i,1);
        i=-1;
    }
}
最后得到的结果是:[2, 2, 2, 2]