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

常规操作

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

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

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);

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

posted @ 2020-08-06 13:43  季风吹向大海  阅读(1371)  评论(0编辑  收藏  举报