JavaScript 中清空数组的几种方法

目录

 Array.prototype.splice()

将 length 设置为 0

 分配新的空数组

length = 0和 Array = [] 之间的差异?


JavaScript 中清空数组的几种方法

 

 多少人都想走出浪浪山 🧨🧨🧨

 Array.prototype.splice()

let course = ['HTML', 'CSS', 'JavaScript']

course.splice(0)
console.log(course.length) // 0

 注意:此方法会影响其他引用。 

let course = ['HTML', 'CSS', 'JavaScript']
let other = course

course.splice(0)
course // []
other // []

 由于 splice() 返回一个已删除项目的数组,您可以通过将结果分配给一个新变量来获取原始数组的副本:

let foo = ['hello', 'world']

// 清空并创建一个 foo 的副本
let bar = foo.splice(0, foo.length)

console.log(foo) // []
console.log(bar) // ['hello', 'world']

将 length 设置为 0

将数组的长度设置为零。 

let course = ['HTML', 'CSS', 'JavaScript']
course.length = 0
console.log(course) // []

 分配新的空数组

let course = ['HTML', 'CSS', 'JavaScript']
course = []
console.log(course.length) // 0

length = 0和 Array = [] 之间的差异?

在大多数情况下,将变量重新分配给空数组是更好的选择。它比调整 length 属性更短、更明确。

但有时,你有一个数组是通过引用分配的,你想让它们保持引用。

假如我们有一个 foo 数组,我们还有一个 bar 变量,我将它的值设置为 foo 数组。

let foo = ['hello', 'world']

// 添加引用
let bar = foo

如果我重新分配 foo 的值为 [] 空数组,bar 变量仍指向分配给它的原始数组。

foo = []

// bar 不受影响
console.log(bar) // ['hello', 'world']

    foo = [] 将一个新的数组的引用赋值给变量,其他引用并不受影响。这意味着以前数组的内容被引用的话将依旧存在于内存中,这将导致内存泄漏。

    如果我改为 foo.length = 0,删除数组里的所有内容,也将影响到其他引用。

let foo = ['hello', 'world']
let bar = foo

foo.length = 0

// `bar` 受影响
console.log(bar) // []

 如果数组被声明为常量,则不能将其重新分配给 []。这时我们应该使用 lenght = 0

const course = ['HTML', 'CSS', 'JavaScript']
course = [] // 会抛出异常:"Assignment to constant variable"

// 使用 length = 0
course.length = 0

 最后:逃不出去的浪浪山,才是每个打工人心底最大的恐惧

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值