Tengo una matriz de varios objetos.
array1 =[ {1:Eat},{2:Shower},{3:Shave}]Quiero convertir esta matriz en un solo objeto.
object1 ={1:Eat, 2:Shower, 3:Shave}¿Cómo lo hago? Las claves (1,2,3) son únicas
LA SOLUCIÓN
array.reduce((a, v) => Object.assign(a,v), {})
LA EXPLICACIÓN
Los bucles Array.reduce() arrojan la matriz inicial destinada a "reducirla" en un solo objeto. El método de reducción le permite almacenar el valor de retorno de cada una de sus iteraciones. Requiere un valor inicial que en este caso será el objeto vacío {} que estaremos llenando con nuestro arreglo.
Luego usamos Object.assign(target, source) que concatena dos objetos y devuelve el objeto concatenado que, en este caso, se guardará en nuestro acumulador y se usará como objetivo para la próxima iteración y le indicará cuándo termina el objeto final construido. Como tiene objetos como claves de la matriz, cada objeto de propiedad individual (fuente) se "asignará" a uno maestro (objetivo) que los recopilará a todos en uno.
array1 =[ {1:'Eat'},{2:'Shower'},{3:'Shave'}] obj1 = array1.reduce((a, v) => Object.assign(a,v), {}) console.log(obj1)La forma más fácil de lograr esto es reducir la lista de objetos a un solo objeto.
const input = [{ 1: 'Eat' }, { 2: 'Shower' }, { 3: 'Shave' }], output = input.reduce((acc, obj) => ({ ...acc, ...obj }), {}); console.log(output); .as-console-wrapper { top: 0; max-height: 100% !important; }fromEntries y flatMap parecen hacer el truco muy bien
const array1 = [ {1:'Eat'},{2:'Shower'},{3:'Shave'}] const obj1 = Object.fromEntries(array1.flatMap(item => Object.entries(item))) console.log(obj1)