用 ECMAScript 2021 (ES12) 中的 Array.prototype.flatMap() 方法简化数组操作

阅读时长 5 分钟读完

ECMAScript 2021 (ES12) 中加入了 Array.prototype.flatMap() 方法,它可以简化数组操作。本文将介绍这个方法的使用以及示例代码,帮助读者更好地理解它的深度以及学习和指导意义。

什么是 Array.prototype.flatMap() 方法

Array.prototype.flatMap() 方法在 ES8 中被引入,是一种数组变换的一种简便方式。该方法返回一个新的扁平化数组,它将每个元素映射为一个新元素,并且可以通过返回一个数组来将它们扁平化。

该方法接受一个回调函数作为参数,这个回调函数对于数组中的每个元素都会调用一次,返回一个新的数组,这些新的数组会被扁平化成一个新的数组来作为该方法的返回值。如果在回调函数中返回的是一个空数组,则会从结果数组中删除这个元素。

Array.prototype.flatMap() 和 Array.prototype.map() 的比较

Array.prototype.flatMap() 和 Array.prototype.map() 方法的作用类似,但它们之间的区别在于,flatMap() 方法会将返回的数组扁平化成一个新的数组,而 map() 方法只会把它们放在一个新数组里,但不进行扁平化。

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

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

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

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

flatMap() 方法也可应用于多维数组的扁平化,但 map() 方法不可以。

ArrayBuffer 与 TypedArray

在 ES6 中,ArrayBuffer 和 TypedArray 需要通过一种特殊的构造函数分别进行创建,并且没有一个简单的方法可以将 ArrayBuffer 转换为 TypedArray 或将 TypedArray 转换为 ArrayBuffer。flatMap() 方法提供了一种便捷的方案来解决这个问题,我们可以使用该方法将 TypedArray 转换为数组并返回一个新的 TypedArray。

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

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

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

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

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

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

使用 Array.prototype.flatMap() 简化代码

可以通过使用 Array.prototype.flatMap() 方法来简化代码。下面是一段使用 FlatMap 方法的代码,将多个类似表单的值连接起来,并用 jQuery 找到对应的输入元素:

该代码可以使用 map() 方法来替换:

使用 Array.prototype.flatMap() 方法,可以将它进一步简化:

总结

Array.prototype.flatMap() 是一个非常实用的方法,它能够将一个数组映射成一个新的扁平化数组。它可与其它数组方法配合使用,对于操作多维数组和 TypedArray 等方面有很大的帮助。使用该方法可以简化数组操作的许多代码。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e9bf62f6b2d6eab34ed309

纠错
反馈