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
過濾陣列
_.difference([1,2,3,4],[2,4])//返回[1,3]