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

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM