入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2016-10-25 投稿人: 浏览次数:1439

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]

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。