// *** before: ***
var nested = [1, [2, 3], [4, [5, 6]]];
var flat = [].concat.apply([], nested); // разворачивает только один уровень
var doubled = [1, 2, 3].reduce(function (acc, x) {
return acc.concat([x, x * 2]);
}, []); // flatMap пришлось бы собирать вручную
// *** in version ES2019: ***
const nested = [1, [2, 3], [4, [5, 6]]];
const flat = nested.flat(); // один уровень
const deepFlat = nested.flat(Infinity); // все уровни
const doubled = [1, 2, 3].flatMap(x => [x, x * 2]);