feat: support rendering array elements

This commit is contained in:
M. George Hansen 2020-06-02 16:39:44 -07:00
parent 3304958b01
commit 7b80d2f324
4 changed files with 35 additions and 14 deletions

View file

@ -51,18 +51,6 @@ export const purgeModuleAndDepsFromCache = (modName: string): void => {
export type Flattenable<T> = Array<T | Flattenable<T>>;
const flatDeepRec = <T>(arr: Flattenable<T>, d: number): T[] => {
if (d <= 0) {
return arr.slice() as T[];
}
let acc = [] as T[];
for (const val of arr) {
acc = acc.concat(Array.isArray(val) ? flatDeepRec(arr, d - 1) : val);
}
return acc;
};
/**
* Flatten an arbitrarily-deeply nested array into a flat array.
*
@ -70,4 +58,14 @@ const flatDeepRec = <T>(arr: Flattenable<T>, d: number): T[] => {
*
* @return Flattened array.
*/
export const flatDeep = <T>(arr: Flattenable<T>): T[] => flatDeepRec(arr, 1);
export const flatDeep = <T>(arr: Flattenable<T>): T[] => {
const flattenedArr: T[] = [];
for (const val of arr) {
if (Array.isArray(val)) {
flattenedArr.push(...flatDeep(val));
} else {
flattenedArr.push(val);
}
}
return flattenedArr;
};