JS类数组转化为数组

类数组:一个简单的定义,如果一个对象有 length 属性值,则它就是类数组;组各种元素检索 API 返回的都是类数组,如 document.getElementsByTagName,document.querySelectorAll 等DOM API;function 中的 arguments 也是类数组。

方法一:Array.from

Array.from({ length: 3 })

方法二:...延展运算符

[...document.querySelectorAll("div")]

不过它只能作用于 iterable 对象,即拥有 Symbol(Symbol.iterator) 属性值,但是严格意义上来说,它不能把类数组转化为数组,如 { length: 3 }它将会抛出异常。

// Uncaught TypeError: object is not iterable (cannot read property Symbol(Symbol.iterator))
[...{ length: 3 }]

方法三:借用 Array API 通过 call/apply 改变 this 或者 arguments

由于借用 Array API,一切以数组为输入,并以数组为输出的 API 都可以来做数组转换,如
Array (借用 arguments)
Array.prototype.concat (借用 arguments)
Array.prototype.slice (借用 this)
Array.prototype.map (借用 this)
Array.prototype.filter (借用 this)

方法四:for循环

let arr = []
for(let i in arrayLike){
    arr[i] = arrayLike[i]
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值