[JS]一次性删除数组中的多个元素

需要通过判断数组中的所有元素,满足特定条件则删除该元素。删除数组的元素,想到的是使用for循环,再配合splice方法。但是此操作存在一个情况:删除一个元素后,原有的循环id被打乱了,存在大量遗漏的情况。

var _array=[1,2,1,1,1,1,3,4];
for(var i=0;i<_array.length;i++){
    if(_array[i]==1){
        _array.splice(i,1);
    }
}
console.log(_array);//得到的是错误的[2, 1, 1, 3, 4]

解决办法

办法也挺简单的,将数组改为倒着循环。

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

发表于:2019-10-25