有两种ES6方法可从类似数组或可迭代的对象创建数组:
let arr = Array.from(Object);
let arr = [...Object];
这两个都在做完全一样的事情:
let string = 'foobar';
console.log( [...string] );
console.log( Array.from(string) );
两者之间有什么区别?我最好使用哪一个将HTMLCollection转换为数组?
答案 0 :(得分:2)
每种工具的用途没有什么区别,但是您几乎应该确定使用扩展语法。原因是语法将由babel,打字稿编译器等自动转换。但是除非您不关心较旧的浏览器,否则您需要为Array.from
添加一个polyfill 。通常,比运行时解决方案更喜欢编译/构建时解决方案。
答案 1 :(得分:1)
传播语法仅适用于实现迭代器方法(Symbol.iterator()
)的对象。
Array.from()
也可以用于未实现可迭代方法的类似数组的对象(索引元素)。
Array.from()
可以用于HTML集合,因为它具有可读性,因为在这种情况下,两者的结果都是相同的。