用 ES12 中的 Array.prototype.flatMap 方法降低代码复杂度!

阅读时长 4 分钟读完

在前端开发中,针对数组的操作是非常常见的,特别是在一些数据处理、数据转换等场景下。在 ES12 中,新增了一个很实用的数组方法: Array.prototype.flatMap()。它可以将一个嵌套的数组展开并映射成一个新数组,可以有效地降低代码复杂度。

什么是 Array.prototype.flatMap()?

Array.prototype.flatMap() 是在 ES12(ES2022)中新增的数组方法,它和 Array.prototype.map() 方法非常相似,都是将数组中的每个元素进行操作、映射到另一个值,并最终返回一个新的数组。不同之处在于,Array.prototype.flatMap() 方法还会去掉返回值中的空数组([])并将其展开,返回一个“扁平化”的新数组。

如何使用 Array.prototype.flatMap()?

基本语法如下:

参数:

  • callback:回调函数,用于处理每个元素的值,它返回一个新数组,该数组将与结果数组“扁平化”的插入。
  • thisArg:可选,回调函数内部 this 值。

几个示例:

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

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

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

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

如何优雅地使用 Array.prototype.flatMap()?

使用 Array.prototype.flatMap() 方法可以极大地降低使用数组操作时的代码复杂度,例如将一个数组中的字符串数字转换为数字类型:

这一行代码就取代了以下代码:

在处理嵌套数组时,Array.prototype.flatMap()也十分实用。如下例子,我们要求一个班上所有学生的平均成绩:

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

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

这里使用了 Array.prototype.flatMap() 获取所有学生的成绩,又通过 reduce() 方法求和并计算平均值,而没有写循环等冗余的代码。

总结

Array.prototype.flatMap() 方法让我们在数组操作时可以用更简洁、更优雅的方式替代冗长的循环、if 语句等代码,提高了代码的可读性,减少了出错的机率,同时也能很好地满足一些数据处理、数据转换等需求。在实践中,我们应该充分利用 Array.prototype.flatMap() 这个实用的工具,使我们的代码更加简洁易读,提高我们的开发效率。

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

纠错
反馈