Array 构造函数在ES6中新增的
用于创建数组的两个静态方法:from() 和 of()
- from() 用于将类数组结构转换为数组实例
- of() 用于将一组参数转换为数组实例
from 用法
可以将字符串拆分为单字符数组
const a = "happy"
console.log(Array.from(a)) // ['h','a','p','p','y']
可以将集合和映射转换为一个新数组
const m = new Map().set(1,2).set(3,4)
const s = new Set().add(5,6).add(7,8)
console.log(Array.from(m)) // [[1,2],[3,4]]
console.log(Array.from(s)) // [1,2,3,4]
对数组进行浅拷贝
const a1=[1,2,3,4];
const a2=Array.from(a1);
console.log(a2) // [1,2,3,4]
console.log(a1===a2); // false
可以使用任何可迭代对象
const iter={
*[Symbol.iterator](){
yield 1;
yield 2;
yield 3;
yield 4
}
}
console.log(Array.from(iter)) // [1,2,3,4]
可以接收第二个可选的映射函数参数,这个函数可以直接增强新数组的值。也可以接收第三个可选参数,用于指定映射函数中this的值。但这个重写的this值在箭头函数中不适用。
const a1=[1,2,3,4];
const a2=Array.from(a1,x=>x**2);
const a3=Array.from(a1,function(x){return x**this.exponent}, {exponent:2})
console.log(a2); // [1,4,9,16];
console.log(a3); //[1,4,9,16];
of 用法
console.log(Array.of(1,2,3,4)) //[1,2,3,4]
consolg.log(Array.of(undefined)) // [undefined]