Description Is the same as calling JavaScript Maps and then flattening the result. Ie: arr.map(func).flat(1) Type Signature .flatMap<U>( callback: (value: T, index: number, array: T[]) => U|Array<U>, thisValue?: any ): U[] Syntax console.log(["a", "b", "c"].flatMap((x) => x)); // [ 'a', 'b', 'c' ] console.log(["a", "b", "c"].flatMap((x) => [x])); // [ 'a', 'b', 'c' ] console.log(["a", "b", "c"].flatMap((x) => [[x]])); // [ [ 'a' ], [ 'b' ], [ 'c' ] ] console.log(["a", "b", "c"].flatMap((x, i) => new Array(i + 1).fill(x))); // [ 'a', 'b', 'b', 'c', 'c', 'c' ]