splice()方法删除数组中不连续的几项
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]
- 上一篇:没有了
- 下一篇: vue2实现简单的商品加入购物车和结算功能(前端数据保存方向)