常規操作
場景:當我們在實際需求中需要去循環數組並且要刪除數組中某些符合項的時候
我們一般會不假思索的這么干:
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);
不知道對你有沒有幫助,以上就是此類問題的全部解答。