Skip to content

Instantly share code, notes, and snippets.

@tuanlc
Created August 19, 2022 10:17
Show Gist options
  • Select an option

  • Save tuanlc/06a0c4b03dce6dfa3651e69d1684e06e to your computer and use it in GitHub Desktop.

Select an option

Save tuanlc/06a0c4b03dce6dfa3651e69d1684e06e to your computer and use it in GitHub Desktop.
Unnest/flat nested arrays
export default function flatNestedArrays(array: unknown[]): unknown[] {
let output: unknown[] = [];
let stack = [...array];
handleFlatingNestedArrays({ stack, output })
return output.reverse();
}
function handleFlatingNestedArrays({ stack, output }: { stack: unknown[], output: unknown[] }): void {
if (Array.isArray(stack[stack.length-1])) {
stack = [...stack.slice(0, stack.length-1), ...(stack[stack.length-1] as unknown[]).flat()];
return handleFlatingNestedArrays({ stack, output });
}
output.push(stack[stack.length-1] as unknown);
stack = [...stack.slice(0, stack.length-1)];
if (stack.length) return handleFlatingNestedArrays({ stack, output });
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment