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); //清空数组并创建一个新数组,其中包含 //删除的项目
相关问题。