5.5 将数组平铺到指定深度
使用递归,为每个深度级别 depth
递减 1 。 使用 Array.reduce()
和 Array.concat()
来合并元素或数组。 基本情况下, depth
等于 1 停止递归。 省略第二个参数, depth
只能平铺到 1 (单层平铺) 的深度。
-
const flatten = (arr, depth = 1) =>
-
depth != 1
-
? arr.reduce((a, v) => a.concat(Array.isArray(v) ? flatten(v, depth - 1) : v), [])
-
: arr.reduce((a, v) => a.concat(v), []);
-
flatten([1, [2], 3, 4]); // [1, 2, 3, 4]
-
flatten([1, [2, [3, [4, 5], 6], 7], 8], 2); // [1, 2, 3, [4, 5], 6, 7, 8]