在ES6数组中新增了诸如Array.of,Arrar.from方法,这些方法有什么作用呢,今天我们来一探究竟。
一,Array.of
作用:Array.of
方法用于将一组值,转换为数组,有的同学要问了new Array(1,2,3,4),或者直接var arr=[1,2,3,4]也能实现啊,直接使用var arr=[],当然没有问题,稍微有点JavaScript基础的同学应该清楚,当数组中只切只有一个数字时。使用new Array得到的可能不是你要的结果,例如:new Array(2)得到的是长度为2的空数组,当然如果这就是你要的结果当然没问题,如果不是你要的结果呢,除了直接var arr=[2]还有没有其它方式呢?
Array.of的出现就是为了解决这一问题。
var arr=Array.of(4);
console.log(arr)//[4]
返回的是含有元素4的数组
二,Array.from
在JavaScript中有两类对象可以直接使用Array.from方法转变成真正的数组,分别是类数组对象和可迭代(iterable)对象【包括es6新增的数据结构set,map】【判断对象是否可迭代instance[Symbol.iterator]】,该方法会返回新的数组对象,并不会改变原对象。【es6之前可以使用Array.prototype.slice.call方法,但是书写过于繁琐,故用Array.from代替。】
1,类数组对象
1.1 普通对象
var obj={
0:"aaa",
1:"bbb",
length:2
}
console.log(Array.from(obj))//["aaa","bbb"]
1.2 NodeList元素
var divlist=document.querySelectorAll('div')
console.log(Array.from(divlist))//返回包括div元素的数组
2,可迭代对象
let set1=new Set([1,2,3,4])
console.log(Array.from(set1))//[1,2,3,4]
另外map,字符串,函数的arguments参数类型,都可作为转换对象。