數(shù)組循環(huán)刪除某元素 不能從0開始遍歷

參考http://singsing.io/blog/fcc/basic-seek-and-destroy/#comments

在做這題的時候,用的方法一,最基本的解法,循環(huán)遍歷刪除,但是總是不對,后來看解答才煥然大悟

平時寫循環(huán),我們都習慣從 0 開始遍歷。但有時候,如果從 0 開始遍歷是會出錯的。
原因很簡單,如果我們刪除了某一個元素,那么在這之后的所有元素的 index 都會減一。然后我們通過 i++ 來進入下一次循環(huán),相當于跳過了一個元素

function destroyer(arr) {
// 先把 arguments 轉(zhuǎn)換為數(shù)組
    var arg = [].slice.call(arguments);
// 保存下來第一個參數(shù),就是要操作的數(shù)組
   var sourceArr = arg[0];
// 后續(xù)的參數(shù)均為需要刪除的數(shù)字,我們也把這些數(shù)字放到一個數(shù)組里

    var refArr = arg.slice(1);
// 可以思考一下,這里為什么不能從 0 開始遍歷
for (var i = sourceArr.length - 1; i >= 0; i--) {
    // 如果當前的元素存在于 refArr 中,就把它刪掉
    if (refArr.indexOf(sourceArr[i]) > -1) {
        sourceArr.splice(i, 1);
    }
}
return sourceArr;
}
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經(jīng)驗。 張土汪:刷leetcod...
    土汪閱讀 12,766評論 0 33
  • FCC:GitHub - FreeCodeCamp/FreeCodeCamp: The https://FreeC...
    不要吧我再睡會閱讀 1,461評論 4 8
  • leetcode刷題記錄本文記錄一下leetcode刷題記錄,記錄一下自己的解法和心得。 LeetCode Two...
    EarthChen閱讀 3,499評論 0 6
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • 五一的三天假,過得還充實,沒有出去玩,也沒有在宿舍睡覺,站了三天,遇見了很多美好,也有丑惡的事,無論怎樣,都算得上...
    Cowardd閱讀 243評論 0 1