Get to know MDN better
此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
Array.from() 静态方法从可迭代或类数组对象创建一个新的浅拷贝的数组实例。
转换异步的可迭代对象到数组,可以使用 Array.fromAsync()。
想要转换成数组的类数组或可迭代对象。
mapFn 可选调用数组每个元素的函数。如果提供,每个将要添加到数组中的值首先会传递给该函数,然后将 mapFn 的返回值增加到数组中。使用以下参数调用该函数:
element数组当前正在处理的元素。
index数组当前正在处理的元素的索引。
thisArg 可选执行 mapFn 时用作 this 的值。
一个新的数组实例。
Array.from() 可以通过以下方式来创建数组对象:
Array.from() 绝不会创建稀疏数组。如果 arrayLike 对象缺少一些索引属性,那么这些属性在新数组中将是 undefined。
Array.from() 有一个可选的参数 mapFn,该参数允许你在创建数组时为每个元素执行一个函数,类似于 map()。更明确地说,Array.from(obj, mapFn, thisArg) 和 Array.from(obj).map(mapFn, thisArg) 具有相同的结果,只是它不会创建中间数组,并且 mapFn 仅接受两个参数(element、index),不接受数组,因为数组仍然在构建中。
备注:此行为对于类型化数组更为重要,因为中间数组的值必须被截断,以适应相应的类型。Array.from() 的实现与 TypedArray.from() 具有相同的签名。
Array.from() 方法是一个通用的工厂方法。例如,如果一个数组类的子类继承 from() 方法,继承的 from() 方法将返回新的子类的实例,而不是数组的实例。事实上,this 值可以是任意的构造函数,只要该构造函数接受一个表示新数组长度的单个参数。当一个迭代器对象作为类数组传递时,不带参数调用构造函数;当传递类数组对象时,将携带类数组对象的规范化长度调用构造函数。迭代完成时,将再次设置最终的 length。如果 this 值并不是构造函数,则使用 Array 构造函数。
from() 方法可以在任何构造函数上调用,只要该构造函数接受一个表示新数组长度的单个参数。
当 this 值不是构造函数,返回一个普通的数组对象。
| ECMAScript® 2027 Language Specification # sec-array.from |
启用 JavaScript 以查看此浏览器兼容性表。