在 JavaScript 中,由于数组可以嵌套,我们有时需要对嵌套数组进行操作,比如展开嵌套数组,或者根据嵌套数组中的某些条件进行筛选。在 ES10 中,新增了一个很实用的方法 Array.flat(),可以帮助我们轻松地解决以上问题。
Array.flat() 方法介绍
Array.flat() 方法可以将嵌套数组展开为一维数组,同时可以指定展开的层数。其语法如下:
let newArray = arr.flat([depth]);
其中,参数 depth 表示展开的层数,默认值为 1,表示只展开一层。如果传入 Infinity,则会展开所有层数。
下面是一些例子:
-- -------------------- ---- ------- --- ---- - --- -- --- ---- --- ---- - --- -- --- --- ----- --- ---- - --- -- --- --- --- ------ ------------ -- --- -- -- -- ------------ -- --- -- -- --- --- ------------ -- --- -- -- --- --- ---- ------------- -- --- -- -- -- -- -------------------- -- --- -- -- -- -- --
需要注意的是,flat() 方法并不会改变原数组,而是返回一个新的数组。如果需要改变原数组,可以使用 flat() 方法的变体 flatMap()。
示例:使用 Array.flat() 处理嵌套数组
1、展开嵌套数组
假设我们有一个嵌套数组,需要将其展开为一维数组。这时可以使用 Array.flat() 方法,代码如下:
let nestedArr = [1, 2, [3, 4, [5, 6]]]; let flatArr = nestedArr.flat(); console.log(flatArr); // [1, 2, 3, 4, 5, 6]
2、根据某些条件筛选嵌套数组
假设我们有一个二维数组,其中每个子数组都表示一条记录,需要根据某些条件,筛选出符合条件的记录。这时可以使用 Array.filter() 和 Array.flat() 方法,代码如下:
-- -------------------- ---- ------- --- ------- - - - --- -- ----- -------- ---- -- -- - --- -- ----- ------ ---- -- -- - --- -- ----- ---------- ---- -- -- - - --- -- ----- -------- ---- -- -- - --- -- ----- --------- ---- -- -- -- - --- -- ----- -------- ---- -- -- -- --- --------------- - ------- ------- -------------- -- ---------- - ---- ----------------------------- -- -- --- -- ----- -------- ---- -- -- -- - --- -- ----- ---------- ---- -- -- -- - --- -- ----- --------- ---- -- -- -- - --- -- ----- -------- ---- -- --
在以上代码中,我们先使用 flat() 方法展开二维数组,然后使用 filter() 方法筛选符合条件的记录。最后得到的 filteredRecords 数组包含了所有符合条件的记录。
总结
ES10 中新增的 Array.flat() 方法可以帮助我们简单、快速地处理嵌套数组。通过一些示例,我们可以看到这个方法的实用性。
当然,除了 flat() 方法外,ES10 中还有其他许多实用的方法,比 如 Object.fromEntries()、Array.flatMap()、String.trimStart() 和 String.trimEnd() 等等。学习和掌握这些新特性,可以让我们的编码效率得到大幅 提升。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65018bb295b1f8cacdf3f01a