WebGL Tutorial
and more

Array.from

撰写时间:2024-03-14

最新修订:2024-03-14

Array.from

静态方法。从可遍历对象iterable objects)或类似数组对象array-like objects)创建数组。

原型

*[]Array.from
  • ObjectarrayLike
  • CallbackmapFn
  • *thisArg

参数

arrayLike
用于创建数组的对象。或为可遍历的对象,或为类似数组的对象。
mapFn

回调函数。该回调函数接受2个参数。其原型如下:

* | undefinedmapFn
  • *element
  • numberindex
element
当前遍历到的数组元素。
index
当前遍历到的数组索引值。

回调函数mapFn返回的数值将作为新数组的元素。如果没有返回值,默认返回undefined

thisArg
用于设置mapFn函数内的this。可选。

返回值

返回Array的一个实例。

说明

Array的静态方法from可遍历对象iterable objects)或类似数组对象array-like objects)创建数组。

例子

从字符串创建数组

let str = 'Hello'; let arr = Array.from(str); /* ['H', 'e', 'l', 'l', 'o'] */

Array的静态方法from的本质是,从对象中拆出单独的元素来生成数组。

从数组创建数组

let nums = [1, 2, 3, 4, 5]; let arr = Array.from(nums); /* [1, 2, 3, 4, 5] */

尽管看不出细节,但在其内部,是将每个数组元素都单独添加进新创建的数组中。

使用回调函数

使用回调函数,可以先修改数组元素的值后,再添加进新数组中。

let nums = [1, 2, 3, 4, 5]; let arr = Array.from(nums, e => e * 2); /* [2, 4, 6, 8, 10] */

如果并非每轮的回调函数都有返回值,则默认返回undefined

let nums = [1, 2, 3, 4, 5]; let arr = Array.from(nums, (e) => { if (e > 3) { return e * 2; } }); /* [undefined, undefined, undefined, 8, 10] */

参见

  1. Array.fromAsync
  2. Array.isArray
  3. Array.of

参考资源

  1. ECMA 262: Array Objects