ES6 中数组的 from 和 of 静态方法使用详解

在 ES6 中,引入了一些新的静态方法来处理数组。这些方法包括 Array.from()Array.of(),它们可以用于转换其他数据类型为数组,以及创建一个新的包含所提供的参数的数组。这篇文章将详细介绍这两个方法的使用方法,并提供一些示例代码。

Array.from()

Array.from() 方法用于将一个类数组对象或可迭代对象转换为一个数组实例。它接受一个类数组对象作为第一个参数,可选参数为一个 map 函数和一个 this 对象。如果提供了 map 函数,它将应用于转换前的每个元素上,并返回转换后的数组。

下面是一个简单的例子,将一个字符串转换成一个数组:

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

可以看到,将字符串作为参数传递给 Array.from() 方法后,它被转换成了一个数组。

如果需要在转换期间要对每个元素进行其他处理,则可以传递一个 map 函数作为第二个参数。下面是一个处理数值的例子:

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

在这个例子中,Array.from() 方法接受一个数字数组和一个 map 函数。在转换元素之前,每个元素都会被 map 函数处理,返回该数的平方根。

Array.of()

Array.of() 方法用于创建一个新的数组实例,其中包含所有提供的参数。它接受任意数量的参数,因此与 Array() 构造函数不同,不需要指定初始容量。

下面是一个使用 Array.of() 方法创建数组的简单示例:

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

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

可以看到,我们可以传递任意数量的参数,并且它们都会被包含在新的数组中。

注意事项

在使用 Array.from()Array.of() 方法时,需要注意以下几点:

  • Array.from() 方法只能将类数组对象或可迭代对象转换为数组。如果传递给它一个单独的值,它将抛出一个 TypeError
  • Array.of() 方法不同于 Array() 构造函数。当提供单个数字参数时,Array.of() 方法将创建包含该数字的数组;而 Array() 构造函数将创建一个指定长度且预填充了未定义值的数组。
  • 在传递 map 函数给 Array.from() 方法时,需要注意如果您使用箭头函数,那么您将不会在函数中获取到 this 对象的引用。

结论

在 ES6 中,使用 Array.from()Array.of() 静态方法可以让我们更轻松地处理数组。 Array.from() 方法可以用于将任意类数组对象或可迭代对象(例如字符串、Set、Map)转换为一个新的数组实例。而 Array.of() 方法可以用于创建一个新数组,其中包含所有提供的参数。

无论您是要将对象转换为数组,或者创建一个包含数组的新数组,这些方法都是非常有用的。我希望这篇文章能够帮助您更好地理解这两个方法的使用,以及如何将它们应用到您的代码中。

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