A simple Typescript implementation of a map reduce method to flatten a multidimensional array.
Position of array value should be preserved in the same order it was given
type MultiDimensionalArray<T> = (T | (T | T[])[])[];
flatten<T>(arrayToBeFlattened: MultiDimensionalArray<T>): T[]
const array: MultiDimensionalArray<number> = [[3], [3], [3]];
flatten(array) // returns [3, 3, 3]
const array: MultiDimensionalArray<number> = [[1], [[2]], [[3], 4]];
flatten(array) // returns [1, 2, 3, 4]
const array: MultiDimensionalArray<string> = [['t'], [['h']], [['e'], 'o', 'r', ['e', 'm']]];
flatten(array) // returns ['t', 'h', 'e', 'o', 'r', 'e', 'm']