El siguiente código en JavaScript:
const mixedObjects = [1,2,3].map(num => { return { a: 'always same' } });devuelve el siguiente resultado:
[ {a: 'always same'}, {a: 'always same'}, {a: 'always same'} ]Quiero devolver lo siguiente sin declarar una matriz vacía afuera y luego presionarla. Así que hazlo todo dentro del mapa. es posible?
Lo que quiero devolver:
[ {a: 'always same'}, {b: 1}, {a: 'always same'}, {b: 2}, {a: 'always same'}, {b: 3} ]Use Array.flatMap() y devuelva una tupla de los 2 objetos en cada iteración. FlatMap crearía una matriz aplanada de objetos.
const mixedObjects = [1,2,3].flatMap(b => { return [{ a: 'always same' }, { b }] }); console.log(mixedObjects);Puede combinar map y métodos flat :
const mixedObjects = [1,2,3].map(num => { return [{ a: 'always same' }, {b: num}]; }).flat(); PD O use el método flatMap como lo sugiere Ori Drori.
... las soluciones basadas en reduce también funcionan ...
console.log( [1,2,3].reduce((result, b) => [...result, { a: 'always same' }, { b }] , [] ) ); console.log( [1,2,3].reduce((result, b) => result.concat({ a: 'always same' }, { b }), [] ) ); console.log( [1,2,3].reduce((result, b) => { result.push({ a: 'always same' }, { b }); return result; }, []) ); .as-console-wrapper { min-height: 100%!important; top: 0; }