跳到主要内容

flatten [羊毛]

TS JS Deno

将阵列弄平到指定的深度。

使用递归,减少 depth 每个深度级别为 1。

使用 Array.prototype.reduce() and Array.prototype.concat() 以合并元素或数组。 基线,用于 depth 等于 1 停止递归. 省略第二个论点, depth 仅将其弄平到深度 1 (单个平坦).

typescript
const flatten = (arr: any[], depth = 1): any[] => {
if (typeof Array.prototype.flat !== "undefined") return arr.flat(depth);
return arr.reduce(
(a, v) =>
a.concat(depth > 1 && Array.isArray(v) ? flatten(v, depth - 1) : v),
[]
);
};
typescript
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]