JavaScript 删除所有元素

示例

var arr = [1, 2, 3, 4];

方法1

创建一个新数组,并用一个新数组覆盖现有的数组引用。

arr = [];

必须小心,因为这不会从原始阵列中删除任何项目。传递给函数时,数组可能已关闭。该数组将在函数的生命周期内保留在内存中,尽管您可能不知道这一点。这是内存泄漏的常见原因。

由错误的阵列清除导致的内存泄漏示例:

var count = 0;

function addListener(arr) { // arr已关闭
  var b = document.body.querySelector("#foo" + (count++));
  b.addEventListener("click", function(e) { // 此功能参考保持
    // 闭合电流
    // 活动正在进行
    // 做某事但不需要arr       
  });
}

arr = ["big data"];
var i = 100;
while (i > 0) {
  addListener(arr); // 数组传递给函数
  arr = []; // 仅删除引用,保留原始数组
  array.push("some large data"); // 分配更多的内存
  i--;
}
// 现在关闭了100个数组,每个数组引用一个不同的数组
// 没有一个项目被删除

为防止发生内存泄漏的风险,请使用以下2种方法之一在上述示例的while循环中清空数组。

方法2

设置length属性会将所有数组元素从新数组长度删除到旧数组长度。这是删除和取消引用数组中所有项目的最有效方法。保留对原始数组的引用

arr.length = 0;

方法3

与方法2相似,但返回一个包含删除项的新数组。如果不需要项,则此方法效率不高,因为仍然仅创建新数组以立即取消引用。

arr.splice(0); // 如果您不希望删除项目,则不应使用
// 仅在执行以下操作时使用此方法
var keepArr = arr.splice(0); // 清空数组并创建一个新数组,其中包含
                             // 删除的项目

相关问题。