Array.of && Array.from
如果给Array构造函数传入一个数值型的值,那么数组返回的length属性会被设置为该值; 如果传入一个非数值类型的值,那么这个值会成为目标数据的唯一项;如果传入多个值,此时无论这些值是不是数值型的,都会变为数组的元素。而且,需要特别注意的是,如果直接传入一个数值型的值,虽然长度length等于这个值,但是每一项是没有值的,而且也不能用map等方法去遍历,需要用Array.from()先转换。
这样是存在一些风险的,因为我们在设置的时候有时候并不能总是去注意传入的值的类型,因此,ECMAScript6 提供了 Array.of() 方法来解决这个问题。 Array.of() 与 Array 构造函数的工作机制类似,只是不存在单一数值型参数值的特例,无论有多少参数,无论参数是什么类型的, Array.of() 方法总会创建一个包含所有参数的数组。
JavaScript不支持直接将非数组对象转换为真实数组,arguments就是一种类数组对象,如果要把它当做数组使用则必须先转换该对象的类型。Array.from()方法可以先接受可迭代对象作为第一个参数,最终返回一个数组。如果想要进一步转换数组,可以提供一个映射函数作为Array.from()的第二个参数,这个参数用来将类数组对象中的每一个值转换成其他形式,最后将这些结果储存在结果数组的相应索引中;例如: Array.from( arr, (value) => { return value + 1; })