ES10 的 Array.flat() 是如何处理嵌套数组的?

在 ES10 中,新增了一个 Array.flat() 方法,它可以将嵌套数组展开为一维数组。这个方法非常实用,可以大大简化嵌套数组的处理。

用法

Array.flat() 方法有一个可选的参数 depth,用于指定要展开的嵌套层数。默认值为 1,即只展开一层嵌套数组。如果传入 Infinity,则会展开所有嵌套数组。

下面是一个简单的示例:

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

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

在上面的代码中,原始数组 arr 中包含一个嵌套数组 [3, 4, [5, 6]],使用 flat() 方法展开后得到的 flatArr 数组中,这个嵌套数组还是存在的。

如果要将所有嵌套数组都展开,可以这样写:

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

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

注意事项

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

1. 不会改变原数组

Array.flat() 方法不会改变原数组,而是返回一个新的数组。

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

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

2. 只会展开数组

Array.flat() 方法只会展开数组,对于其他类型的值(比如对象、字符串、数字等),会直接返回。

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

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

3. 可以处理稀疏数组

稀疏数组是指数组中包含 undefined 或空位的情况。Array.flat() 方法会将它们展开为 undefined。

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

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

4. 可以自定义展开深度

Array.flat() 方法的 depth 参数可以是任意非负整数,也可以是 Infinity。如果传入的是负数或者其他类型的值,会被自动转换为 0。

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

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

总结

Array.flat() 方法可以方便地将嵌套数组展开为一维数组。在使用时需要注意不会改变原数组、只会展开数组、可以处理稀疏数组、可以自定义展开深度等几点。

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