提问人:Tim 提问时间:8/2/2021 最后编辑:pilchardTim 更新时间:11/17/2023 访问量:149
我需要使用 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"] ], ]
问:
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' ] ]
答:
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"]],
]);
评论
flat()
采用一个 depth 参数,该参数指定要展平的深度,默认值为1