码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript splice循环删除不能全部符合条件的数据

时间:2020-06-28 12:38:03      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:round   code   删除元素   删除   tom   span   应该   ann   strong   

问题原因:

  因为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++
  }
}

 

JavaScript splice循环删除不能全部符合条件的数据

标签:round   code   删除元素   删除   tom   span   应该   ann   strong   

原文地址:https://www.cnblogs.com/wangweizuo/p/13202019.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!