JavaScript splice循环删除不能全部符合条件的数据
Posted w_wz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript splice循环删除不能全部符合条件的数据相关的知识,希望对你有一定的参考价值。
问题原因:
因为splice每次删除都会改变原数组的长度,所以导致数组中的元素位置发生改变,从而导致只能删除部分数据
解决方法:
- 倒序删除
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循环删除不能全部符合条件的数据的主要内容,如果未能解决你的问题,请参考以下文章
我想通过 splice() 从数组中删除一个对象但不能正常工作