Array.from
和 展开运算符 ...
都可以让一个可迭代对象变成一个真实的数组;
let str = "Hello";
alert( [...str] ); // H,e,l,l,o
let str = "Hello";
// Array.from 将可迭代对象转换为数组
alert( Array.from(str) ); // H,e,l,l,o
但二者之间略有不同:Array.from
也适用于类数组对象, 而 ...
不行
根据 MDN 描述,Array.from
和展开运算符 ...
生成数组的不同在于:
不过
Array.from(obj)
和[...obj]
存在一个细微的差别:
Array.from
适用于类数组对象也适用于可迭代对象。 Spread 语法只适用于可迭代对象。因此,对于将一些“东西”转换为数组的任务,
Array.from
往往更通用。
也就是说 Array.from 在以下情况也适用:
let arrayLike = {
0: "Hello",
1: "World",
length: 2
};
let arr = Array.from(arrayLike); // (*)
alert(arr.pop()); // World(pop 方法有效)