怎样使用 ECMAScript 2021 的 Array.prototype.flat 方法推平数组中的嵌套数组?

阅读时长 3 分钟读完

在前端开发中,我们常常会处理数组数据,有时候会遇到嵌套数组的情况。为了方便数据处理,我们需要将嵌套数组展开,使数据扁平化。ECMAScript 2021 中引入了 Array.prototype.flat() 方法,可以非常方便地将嵌套数组变为扁平化的一维数组,本文将详细介绍该方法的使用。

什么是 Array.prototype.flat?

Array.prototype.flat() 方法是 ECMAScript 2021 中新增的方法,用于将指定深度的嵌套数组展开为一个一维数组。该方法不会修改原始数组,而是返回一个新数组。

该方法可以通过以下方式调用:

其中,array 表示要被平坦化的数组,depth 表示展开的深度,如果省略则默认为 1。

如何使用 Array.prototype.flat?

下面是一个例子,展示如何使用 Array.prototype.flat() 方法来将嵌套数组展开:

从上面的例子可以看出,调用 arr.flat() 方法仅仅将数组降了一个维度,因为默认的 depth 参数为 1。如果要将所有深度的嵌套数组都展开,需要将 depth 设置为一个比较大的数值:

这样,所有嵌套数组都被展开了。

如何处理多维数组?

如果有多维的嵌套数组,可通过多次调用 Array.prototype.flat() 方法来展开,下面是一个例子:

不过,这种方式有点不灵活,当数组维度很大时,需要连续调用多次 flat() 方法。因此,我们可以使用递归的方式来处理多维数组,如下:

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

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

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

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

这样,无论数组嵌套的深度有多少层,都可以使用 flatten() 函数将其展开为一维数组。

总结

Array.prototype.flat() 方法是 ECMAScript 2021 中新增的非常实用的方法,可以方便地将嵌套数组展开为一维数组,而不需要使用递归等复杂的方式。在处理数组数据时,我们可以根据需要来调整展开的深度,或者使用递归方式处理多维数组。同时,需要注意的是,该方法不会修改原始数组,而是返回一个新数组。

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

纠错
反馈