在 ES9 中,JavaScript 引入了两个新的数组方法:Array.prototype.flat() 和 Array.prototype.flatMap() ,这两个方法可以让我们更方便地处理嵌套数组。本文将详细介绍 Array.prototype.flat() 方法。
flat() 方法
Array.prototype.flat() 方法可以将嵌套的数组“扁平化”,即将多维数组转换为一维数组。该方法返回一个新的数组,不会改变原数组。
语法
-----------------
参数:
depth
:可选,指定要“扁平化”的层数,默认为 1。
示例
----- ---- - --- -- --- ---- ------------------------- -- --- -- -- -- ----- ---- - --- -- --- --- ----- ------------------------- -- --- -- -- --- --- ----- ---- - --- -- --- --- ----- -------------------------- -- --- -- -- -- --
上述示例中,arr1 中有一个嵌套数组,执行 flat() 方法后,得到一个一维数组。arr2 中有两个嵌套数组,执行 flat() 方法后,只“扁平化”了一层,得到一个包含一个嵌套数组的一维数组。arr3 中有两个嵌套数组,执行 flat(2) 方法后,“扁平化”了两层,得到一个一维数组。
deep Flat
有时候我们需要“扁平化”多维数组,可以使用递归的方式来实现“深度”扁平化。下面是一个实现“深度”扁平化的示例:
----- -------- - ----- -- - ------ ---------------- ---- -- - ------ ------------------ - ------------------------- - ---------------- -- ---- - ----- --- - --- --- --- ---- --- --------------------------- -- --- -- -- -- --
上述示例中,我们定义了一个 deepFlat() 函数,使用 reduce() 方法实现递归“深度”扁平化。该函数接收一个数组作为参数,如果该数组中的元素是数组,就递归调用 deepFlat() 函数,否则将该元素添加到结果数组中。
总结
Array.prototype.flat() 方法可以将多维数组“扁平化”,非常方便。如果需要“深度”扁平化,可以使用递归的方式实现。掌握这个方法,可以让我们更方便地处理多维数组,提高开发效率。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/660a1b1ad10417a2228f17e2