Array.from(Object)和[... Object]有什么区别?

时间:2019-07-29 11:08:57

标签: javascript arrays ecmascript-6

有两种ES6方法可从类似数组或可迭代的对象创建数组:

  1. Array.from()let arr = Array.from(Object);
  2. Spread syntaxlet arr = [...Object];

这两个都在做完全一样的事情:

let string = 'foobar';

console.log( [...string] );
console.log( Array.from(string) );

两者之间有什么区别?我最好使用哪一个将HTMLCollection转换为数组?

2 个答案:

答案 0 :(得分:2)

每种工具的用途没有什么区别,但是您几乎应该确定使用扩展语法。原因是语法将由babel,打字稿编译器等自动转换。但是除非您不关心较旧的浏览器,否则您需要为Array.from添加一个polyfill 。通常,比运行时解决方案更喜欢编译/构建时解决方案。

答案 1 :(得分:1)

传播语法仅适用于实现迭代器方法(Symbol.iterator())的对象。

另一方面,

Array.from()也可以用于未实现可迭代方法的类似数组的对象(索引元素)。

Array.from()可以用于HTML集合,因为它具有可读性,因为在这种情况下,两者的结果都是相同的。