AymaxLi / AymaxLi.github.io

:point_right: my blog,show in issues ~
https://github.com/AymaxLi/AymaxLi.github.io/issues
3 stars 0 forks source link

将类数组 (array-like) 对象转化为数组 #5

Open AymaxLi opened 6 years ago

AymaxLi commented 6 years ago

Background

What is Array-Like Object

JavaScript 中常见的类数组有:

Solutions

使用 Array.prototype.slice 进行转化

;(function sum (a, b, c) {
    let args = Array.prototype.slice.call(arguments)

    console.log(args.reduce((pre, cur) => pre + cur))  // 6
})(1, 2, 3)

使用 ES6 新增的 Array.from 进行转化

;(function sum (a, b, c) {
    let args = Array.from(arguments)

    console.log(args.reduce((pre, cur) => pre + cur))  // 6
})(1, 2, 3)

使用 ES6 的 ... 拓展运算符

;(function sum (a, b, c) {
    let args = [...arguments]

    console.log(args.reduce((pre, cur) => pre + cur))  // 6
})(1, 2, 3)

Reference

AymaxLi commented 6 years ago

补充

Object.keys 取得类数组的可枚举属性,再用 map 返回内容组成数组

 ;(function sum (a, b, c) {
    let args = Object.keys(arguments).map(key => arguments[key])

    console.log(args.reduce((pre, cur) => pre + cur))  // 6
})(1, 2, 3)

Reference

创建长度为 100 的数组 - 掘金