JavaScript splice循環刪除不能全部符合條件的數據


問題原因:

  因為splice每次刪除都會改變原數組的長度,所以導致數組中的元素位置發生改變,從而導致只能刪除部分數據

解決方法                

  1. 倒序刪除
let arr = [
        {id:1,name:'Tom',sex:0},
        {id:2,name:'Jerry',sex:1},
        {id:3,name:'Danny',sex:1},
        {id:4,name:'Jenny',sex:0},
        {id:6,name:'Lee',sex:0},
        {id:5,name:'Bob',sex:1},
        {id:7,name:'John',sex:0},
        {id:8,name:'Marry',sex:1}
    ];
    
    for(let i=arr.length-1;i>=0;i--){
        if(arr[i].sex === 1){
            arr.splice(i,1);
        }

    2、 正序刪除,只有不是被刪除元素時才對索引做偏移i++ (注意:for循環的索引邊界應該為動態的,arr.length)

var arr = ["a","b","c","a",'a',"b"];
var ele = "a";

for(var i = 0; i < arr.length; ) {
 if(arr[i] == ele) {
  arr.splice(i, 1);
 } else {
    i++;  //只有在沒有刪除元素時才對索引 i++
  }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM