I have [3, 16, 120]
. when I do [3, 16, 120].map(mapper)
, I want to achieve, for example [4,5, 17,18, 121,122]
i.e. each element map to n
Using Array.prototype.flat():
const doubled = [3, 16, 120].map(item => [item + 1, item + 2]).flat();
console.log(doubled)
Fair warning – not a standard method to this date (posted 12/2018).
you could produce an array for each items, then concat all these arrays :
[3, 16, 120].map(x => [x+1, x+2] ).reduce( (acc,val) => acc.concat(val), []);
Use Array.prototype.flatMap(), introduced in ES10.
const oddNumbers = [1, 3, 5, 7, 9];
const allNumbers = oddNumbers.flatMap((number) => [number, number + 1]);
console.log(allNumbers); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
I come up with one myself, using spread operator.
[].concat(...[3, 16, 120].map(x => [x+1, x+2]))