js数组循环删除某些项的方法

464 阅读1分钟

常规操作

场景:当我们在实际需求中需要去循环数组并且要删除数组中某些符合项的时候

我们一般会不假思索的这么干:

var arr = [1,2,2,3,4,5];
 var len = arr.length;
 for(var i=0;i<len;i++){
     if(arr[i]==2){
          arr.splice(i,1);
     }
 }console.log(arr) // [1,2,3,4,5]

那么问题来了,怎么还有一个符合条件的没有删掉呢?什么鬼,哈哈。。。。

分析原因:

 原因为当删除掉了一个元素后,数组的索引发生的变化,造成了程序的异常

解决问题

采用倒序的方式来循环

var arr = [1,2,2,3,4,2];
 var len = arr.length-1;
 for(var i=len;i>=0;i--){
 if(arr[i]==2){
  arr.splice(i,1);
 }
 }
 console.log(arr);

方法二

更简单的方式

var arr = [1,2,2,3,4,5];
var i = arr.length;
while(i--){
if(arr[i]==2){
 arr.splice(i,1);
}
}
console.log(arr);

不知道对你有没有帮助,以上就是此类问题的全部解答。