类数组对象
什么是类数组对象呢
本人理解的类数组对象就是:有 length 属性的对象。
const ArrayLike = {length: 10}
const ArrayLike1 = {name:'wsf',age: 12, length: 10}
const ArrayLike2 = {0: 'aaa',8: 'bbb',length: 10}
// 以上定义的三个变量都是 类数组对象;区别是 第二个变量中 键名 是数字
Array.from
Array.from 将 类数组对象 转化为数组
通过Array.from 对两个 类数组对象 进行处理,可以看到:
Array.from(ArrayLike)
(10) [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]
Array.from(ArrayLike1)
(10) [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]
console.log(Array.from(ArrayLike2)
(10) ["aaa", undefined, undefined, undefined, undefined, undefined, undefined, undefined, "bbb", undefined]
Array.from处理类数组对象时,首相会创建出 length 为 ArrayLike.length 的 数组
然后将 键名 和 下标 对应的键值 写入
Array.from 将 可遍历对象 转化为数组(扩展运算符 …)
可遍历对象:简单的来说就是部署了 [Symbol.iterator] 属性的 对象
将 String 转化为数组
const str = "abcdefg"
Array.from(str) // [”a“,”b“,”c“,”d“,”e“,”f“,”g“]
将 Set 转化为数组
const set = new Set([1,2,3,4,5,6,7])
Array.from(set) //[1,2,3,4,5,6,7]
将 Map 转化为数组
const map = new Map([["name","aaa"],["age",12]])
Array.from(map) //[["name","aaa"],["age":12]]