ES7 中的 Array.prototype.flat() 方法:什么是?

阅读时长 4 分钟读完

在 JavaScript 中, Array 是最常用的数据类型之一,并且有着很多有用的方法。ES7 为 Array 加入了一个新方法—— Array.prototype.flat(),用于将多维数组“压平”,即将嵌套的数组展开成一个一维数组。

语法和参数

Array.prototype.flat() 方法的语法非常简单:

arr 是要被“压平”的数组,depth 是一个可选参数,用于指明要将数组“压平”多少层。如果不传入参数,则默认为 1

示例

假设有一个多维数组:

使用 flat 方法展开它:

可见,[5, 6] 这个嵌套的数组没有被展开,因为默认值 depth1,只展开了一层。

如果我们指定 depth2

则所有嵌套的数组都被“压平”成了一个一维数组。

深入理解

看完上面的示例,你可能会认为 flat 方法的作用就是将嵌套的数组“压平”,但实际上它的功能远远不止于此。

Array.prototype.flat() 方法的规范中,有这么一句话:

The flat method immediately flattens any array, i.e., it recursively removes all nested arrays.

也就是说, flat 方法可以递归地移除所有嵌套的数组。

在这个例子中,我们指定了 depthInfinity,这意味着会递归地移除所有嵌套的数组,并把它们展开成一个一维数组。

实用场景

有了 Array.prototype.flat() 方法,我们可以更轻松地处理多维数组。

例如,在前端开发过程中,我们经常需要获取嵌套对象的某个值。借助 flat 方法,可以很方便地将嵌套对象“解构”成一个一维对象。

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

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

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

这里我们使用了 Object.keys() 方法获取对象的键名,然后结合 Array.prototype.flatMap()Array.prototype.map() 方法将嵌套对象“压平”,最终得到一个一维数组。

总结

在本文中,我们介绍了 Array.prototype.flat() 方法的语法和用法,并通过示例代码和实用场景深入理解了它的功能。

随着前端开发的不断发展,我们需要不断学习新的技术和 API,来提高我们的技能和效率。使用 Array.prototype.flat() 方法,让我们在处理多维数组时更加得心应手!

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

纠错
反馈