Files
30-seconds-of-code/snippets/flatten-array-up-to-depth.md
Angelos Chalaris c76c245b63 Create flatten-array-up-to-depth.md
In reference to #100.
2017-12-14 16:10:43 +02:00

557 B

Flatten array up to depth

Use recursion, decrementing depth by 1 for each level of depth. Use Array.reduce() and Array.concat() to merge elements or arrays. Base case, for depth equal to 1 stops recursion. Omit the second element, depth to flatten only to a depth of 1 (single flatten).

const flattenDepth = (arr, depth = 1) =>
  depth != 1 ? arr.reduce((a, v) => a.concat(Array.isArray(v) ? flattenDepth (v, depth-1) : v), []) 
  : arr.reduce((a,v) => a.concat(v),[]);
// flattenDepth([1,[2],[[[3],4],5]], 2) -> [1,2,[3],4,5]