js使用splice遍历删除元素时,我们一般都是下面这种写法:
var arr = [3, 0, 11, 0, 3, 0, 66];
for (var i = 0; i < arr.length; i++) {
if (arr[i] == 0) {
arr.splice(i, 1);
}
}
console.log(arr);
这种写法在遇到数组中连续出现多个要删除的数据时,就会出现漏删的现象。
原因就是,在使用splice删除元素的时候会改变原来的数组,数据删除了,i值也就是下标值没有变,就会造成相邻的数据被跳过了
正确的使用方法是:
var arr = [3, 7, 11, 0, 0, 0, 3, 0, 55]
for (var i = 0; i < arr.length; i++) {
if (arr[i] == 0) {
arr.splice(i, 1);
i--;
}
}
console.log(arr);