flatten - 平铺数组
优质
小牛编辑
124浏览
2023-12-01
将数组平铺到指定的深度。
使用递归,为每个深度级别 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]