Javascript迴圈刪除陣列中元素的幾種方法示例
發現問題
大家在碼程式碼的過程中,經常會遇到在迴圈中移除指定元素的需求。按照常規的思路,直接一個for迴圈,然後在迴圈裡面來個if判斷,在判斷中刪除掉指定元素即可。但是實際情況往往不會像預想的那樣順利執行。
下面以一段Javascript程式碼為例演示這一過程。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
執行結果如下:
從最終的結果可以看到實際上只刪除掉了匹配的其中一個元素,而另外一個元素還存在。
從打印出的執行過程不難發現,原因為當刪除掉了一個元素後,陣列的索引發生的變化,造成了程式的異常。
解決方法
找到了問題的原因,就不難解決問題了。
方法一
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
上面的程式碼看起來不大好理解,有沒有看起來更易於理解的程式碼呢?請看下面
方法二
1 2 3 4 5 6 7 8 9 10 11 12 |
|
從後往前遍歷可以有效解決問題,也容易理解,那麼還有沒有跟簡潔的實現呢?接著看下面程式碼
方法三
1 2 3 4 5 6 7 8 9 10 11 |
|
使用while(i--)
,i為陣列下標,個人覺得這是最簡潔、高效的程式碼實現了。