首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript 陣列移除 undefined 元素並壓縮:正確迴圈與 splice 技巧

     編輯:程式設計綜合問答

錯誤示範

var arr = [undefined, 1, undefined, undefined, 6];
for (var i = 0; i < arr.length; i++) {
    if (arr[i] === undefined) arr.splice(i, 1); // 刪除後索引位移,導致漏檢
}
// 結果仍殘留 undefined

三種正確做法

  1. 反向迴圈(推薦,原地修改):
    for (var i = arr.length - 1; i >= 0; i--) {
        if (arr[i] === undefined) arr.splice(i, 1);
    }
    
  2. 遞減索引(正向迴圈):
    for (var i = 0; i < arr.length; i++) {
        if (arr[i] === undefined) { arr.splice(i, 1); i--; }
    }
    
  3. 函數式 filter(建立新陣列,語意最清晰):
    arr = arr.filter(function(v) { return v !== undefined; });
    // 或 ES6
    arr = arr.filter(v => v !== undefined);
    

效能與語意比較

方法原地修改效能可讀性
反向迴圈是O(n)中
遞減索引是O(n)中
filter否(新陣列)O(n)高

現代瀏覽器 filter 效能極佳,優先考慮可讀性;若記憶體極度敏感或需保持原陣列引用,用反向迴圈。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved