我需要使用 JS 的 flat 方法展平一个多维数组。这是数组 [ [“1”, “0”], [“3”, “5”, [“8”, [“10”], “11”] ], ]

I need to flatten a multi dimensional array using JS 's flat method. This is the Array [ ["1", "0"], ["3", "5", ["8", ["10"], "11"] ], ]

提问人:Tim 提问时间:8/2/2021 最后编辑:pilchardTim 更新时间:11/17/2023 访问量:149

问:

function flatArrs(arr) {
  let output = arr
    .flat()
    .sort((a, b) => a - b);
  console.log(output);
}

flatArrs([
  ["1", "0"],
  ["3", "5", ["8", ["10"], "11"]],
]);

这是输出,所有数组都不显示扁平化...为什么?[ '0', '1', '3', '5', [ '8', [ '10' ], '11' ] ]

阵列 展平

评论

1赞 pilchard 8/2/2021
flat() 采用一个 depth 参数,该参数指定要展平的深度,默认值为1

答:

0赞 pilchard 8/2/2021 #1

flat() 接受一个 depth 参数,该参数指定要展平的深度,默认值为 1。要展平到任意深度,您可以传递 Infinity

MDN 详细介绍了许多替代方案,包括 using 、 递归和生成器函数。concat()

function flatArrs(arr) {
  let output = arr
    .flat(Infinity)
    .sort((a, b) => a - b);
  console.log(output);
}

flatArrs([
  ["1", "0"],
  ["3", "5", ["8", ["10"], "11"]],
]);

0赞 Vidhi Kapadia 11/17/2023 #2

flat 采用一个深度参数,该参数指定要展平的深度,默认值为 1。就你而言,它是三级深。因此,您需要将 3 作为参数传递以使其扁平化。

function flatArrs(arr) {
  let output = arr
    .flat(3)
    .sort((a, b) => a - b);
  console.log(output);
}

flatArrs([
  ["1", "0"],
  ["3", "5", ["8", ["10"], "11"]],
]);