splice()方法删除数组中不连续的几项

来源:互联网 发布:网络线上赌博 编辑:程序博客网 时间:2024/05/18 00:58

1、正常情况下,用splice方法删除数组的某一项,完全可以

例如:

        var arr=['内马尔','C罗','梅西','伊布','范佩西'];
for(let i=0;i<arr.length;i++){
//只删除一项时:梅西
if(arr[i] == '梅西'){
arr.splice(i,1);
}
}
console.log(arr);

2、那么问题来了:如果现在要删除‘内马尔’+‘梅西’+‘伊布’呢?

如果继续使用splice方法,多加一个判断而已

var arr=['内马尔','C罗','梅西','伊布','范佩西'];
for(let i=0;i<arr.length;i++){
//删除不连续多项时:内马尔+伊布+梅西
if(arr[i] == '内马尔' || arr[i] == '梅西' || arr[i] == '伊布'){
arr.splice(i,1);
}
}
console.log(arr);

Duang!删错了

3、问题分析,改进方法

因为上面每一个if判断中执行splice()后,原数组变化,原数组的中每一项的下标是会改变的哦

所以再用splice()方法就会出错!直接每次执行splice()后,i--就可以了

var arr=['内马尔','C罗','梅西','伊布','范佩西'];
for(let i=0;i<arr.length;i++){
//删除不连续多项时:内马尔+伊布+梅西
if(arr[i] == '内马尔' || arr[i] == '梅西' || arr[i] == '伊布'){
arr.splice(i,1);
i--;
}
}
console.log(arr);

4、或者使用lodash的方法

过滤数组

_.difference([1,2,3,4],[2,4])//返回[1,3]

0 0
原创粉丝点击