ECMAScript 2019(ES10)的 Array 的 Array.from() 方法的使用与实例详解

在 ECMAScript 2019(ES10)中,Array 对象新增了一个静态方法 Array.from(),该方法可以将类数组对象或可迭代对象转换为真正的数组。本文将详细介绍 Array.from() 的使用方法和实例,帮助读者更好地理解和应用这个方法。

Array.from() 方法的语法

Array.from() 方法的语法如下:

---------------------- ------- ----------

其中,arrayLike 参数表示要转换为数组的类数组对象或可迭代对象。mapFn 参数是一个可选的回调函数,用于对数组元素进行处理或映射。thisArg 参数也是可选的,用于指定 mapFn 函数中 this 的值。

Array.from() 方法的使用

将类数组对象转换为数组

首先,我们来看一个将类数组对象转换为数组的例子:

----- --------- - - -- ---- -- ---- -- ---- ------- - --
----- --- - ----------------------
----------------- -- ----- ---- ----

上述代码中,我们定义了一个类数组对象 arrayLike,该对象具有 3 个属性和一个 length 属性,因此可以被视为数组。我们使用 Array.from() 方法将 arrayLike 转换为真正的数组,并将结果保存在变量 arr 中。

将可迭代对象转换为数组

除了类数组对象,Array.from() 方法还可以将可迭代对象转换为数组。可迭代对象是指实现了迭代器协议的对象,例如 Set、Map 和字符串等。下面是一个将 Set 对象转换为数组的例子:

----- --- - --- --------- ---- ------
----- --- - ----------------
----------------- -- ----- ---- ----

上述代码中,我们定义了一个 Set 对象 set,其中包含了三个字符串元素。我们使用 Array.from() 方法将 set 转换为真正的数组,并将结果保存在变量 arr 中。

使用 mapFn 参数对数组元素进行处理

在转换数组的过程中,我们还可以使用 mapFn 参数对数组元素进行处理或映射。下面是一个将字符串数组转换为数字数组的例子:

----- ------ - ----- ---- -----
----- ------ - ------------------ --------
-------------------- -- --- -- --

上述代码中,我们定义了一个字符串数组 strArr,其中包含了三个字符串元素。我们使用 Array.from() 方法将 strArr 转换为真正的数组,并使用 Number 函数作为 mapFn 参数,将字符串转换为数字。最终,我们得到了一个数字数组 numArr。

使用 thisArg 参数指定 mapFn 函数中的 this 值

在使用 mapFn 参数对数组元素进行处理或映射时,我们还可以使用 thisArg 参数指定 mapFn 函数中的 this 值。下面是一个将字符串数组转换为大写字母数组的例子:

----- ------ - ----- ---- -----
----- ------------ - ------------------ -------- --- -
  ------ ----------------
-- ------------------
-------------------------- -- ----- ---- ----

上述代码中,我们定义了一个字符串数组 strArr,其中包含了三个小写字母。我们使用 Array.from() 方法将 strArr 转换为真正的数组,并使用一个匿名函数作为 mapFn 参数,将字符串转换为大写字母。我们还使用 String.prototype 作为 thisArg 参数,将 this 值指定为 String 对象。最终,我们得到了一个大写字母数组 upperCaseArr。

总结

Array.from() 方法是 ECMAScript 2019(ES10)中新增的一个静态方法,用于将类数组对象或可迭代对象转换为真正的数组。除了基本的转换功能外,该方法还支持使用 mapFn 和 thisArg 参数对数组元素进行处理或映射。本文介绍了 Array.from() 方法的语法、使用方法和实例,希望能帮助读者更好地理解和应用这个方法。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65d02890add4f0e0ff935211