在 JavaScript 中清空数组

本文详细介绍了在JavaScript中清空数组的五种不同方法,包括设置为新数组、使用length属性、利用splice()、pop()以及修改原生方法。每种方法的实现原理和适用场景都有所区别,对于内存管理和效率也有不同影响。例如,设置为新数组可能导致内存泄漏,而使用length属性则能确保其他引用同步更新。
摘要由CSDN通过智能技术生成

该数组是存储在一个方便的索引集中的项目集合。如果我们想清空一个包含多个项目的数组怎么办?

本教程介绍了如何在 JavaScript 中清空数组的不同方法

1.将数组设置为大小为零的新数组

这是最快的方法。这会将数组设置为一个新的空数组。 

let Arr = [1,2,3,4];
Arr = [];

 如果您没有其他地方对原始数组的任何引用,这很简单。如果您这样做,这些引用将不会更新,并且这些地方将继续使用旧数组。这意味着对先前数组内容的引用仍保留在内存中,从而导致内存泄漏。

仅当您通过原始变量引用数组时才使用它Arr

下面的代码示例显示了使用此方法时可能遇到的问题:

let Arr1 = [1,2,3,4,5,6];
let Arr2 = Arr1;
Arr1 = [];
console.log({Arr1, Arr2});

 输出:

{
  Arr1: [],
  Arr2: [1, 2, 3, 4, 5, 6]
}

 2.在JavaScript中使用length属性清空数组

它通过将现有数组的长度设置为 0 来清除现有数组。数组的长度属性是一个读/写属性,因此在 ECMAScript 5 中使用严格模式时也可以使用。 

Arr1.length = 0

 这种方式有一个优势,因为它会删除数组中的所有内容,这会影响其他引用。如果我们有两个对同一个数组的引用,我们使用 删除数组的内容Arr1.length = 0,现在两个引用都指向同一个空数组。

例子 :

let foo1 = [1,2,3];
let bar1 = [1,2,3];
let foo2 = foo1;
let bar2 = bar1;
foo1 = [];
bar1.length = 0;
console.log({foo1, bar1, foo2, bar2}); 

输出:

{
  bar1: [],
  bar2: [circular object Array],
  foo1: [],
  foo2: [1, 2, 3]
}

 3.在JavaScript中使用splice()方法清空数组

 该array.splice()方法是 JavaScript 中的内置方法,用于在数组中添加/删除项目并返回删除的项目。

let Arr1 = ["Tomato", "Letcuce", "Spinash", "Cucumber"];
Arr1.splice(2, 0, "Lemon", "Kiwi")
console.log(Arr1);

 输出:

["Tomato", "Letcuce", "Lemon", "Kiwi", "Spinash", "Cucumber"]

 清空数组

Arr1.splice(0, Arr1.length);
console.log(Arr1);

 输出:

[]

 它从数组中删除所有元素并清理原始数组。

 4.在JavaScript中使用pop()方法清空数组

pop()方法从数组中删除最后一个元素并返回该元素。它会改变数组的长度。 

let vegetables = ['broccoli', 'cauliflower', 'cabbage', 'kale', 'tomato'];

console.log(vegetables.pop()); 

console.log(vegetables); 

 输出:

tomato
(4) ["broccoli", "cauliflower", "cabbage", "kale"]

 我们在数组上循环,每次循环弹出数组元素,最后得到空数组。

let Arr1 = [1, 2, 3, 4, 5];
for (let i = Arr1.length; i > 0; i--) {
  Arr1.pop();
}
console.log(Arr1); 

输出:

[]

 这个方案不是很简洁,也是最慢的方案。

5.修改原生方法以在JavaScript 中清空数组

此列表中的最后一项技术可以与上述所有方法一起使用;JavaScript 允许我们修改和使用原生方法来扩展它们的功能。我们可以使用该Array.proptotype.remove函数来修改流程。

在下面的示例中,我们使用了splice()我们在上一个示例中使用的方法。arr.remove()现在,我们可以通过像函数一样调用它来使用该进程。


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

Array.prototype.remove =
  Array.prototype.remove ||
  function () {
    this.splice(0, this.length);
  };

arr.remove();
console.log(arr);

 输出:

[]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值