Tengo una matriz en la que estoy usando .reduce para agrupar todas las identificaciones coincidentes de la matriz en una nueva matriz con la identificación.
El problema es que mi salida se ve así
[ { CHb5591f5db2a546d3af: [ [Object], [Object] ], CH5e86016c8b894d9d87: [ [Object], [Object], [Object], [Object], [Object], [Object] ] } ]Necesito tener la salida como esta
[ {id: CHb5591f5db2a546d3af, content: [ [Object], [Object] ]}, {id: CH5e86016c8b894d9d87, content: [ [Object], [Object], [Object], [Object], [Object], [Object] ]} ]Aquí está mi intento de la función reductora.
result = await response.reduce(function (a, i) { a[i.messagesId] = a[i.messagesId] || []; //it generates a new property i.messagesId with an array if it does not exist (the value of not existing properties is undefined). if exist, it assign itself a[i.messagesId].push(i); return a; }, Object.create({}));Si hay un solo objeto dentro de la matriz, puede lograrlo fácilmente usando Object.entries()
Para fines de demostración, he usado "object" como una cadena
const arr = [ { CHb5591f5db2a546d3af: [["Object"], ["Object"]], CH5e86016c8b894d9d87: [ ["Object"], ["Object"], ["Object"], ["Object"], ["Object"], ["Object"], ], }, ]; const result = Object.entries(arr[0]).map(([id, content]) => ({ id, content })); console.log(result);Puede ser que esto sea lo que estás buscando. Tenemos un método Array.prototype.reduce() que devuelve nuestra matriz de objetos deseada.
const array = [ { 'CHb5591f5db2a546d3af': [ { animal: 'Cat', name: 'Tom' }, { animal: 'Dog', name: 'Bruno' } ] }, { 'CH5e86016c8b894d9d87': [ { animal: 'Alligator', name: 'Mike' } ] }, { 'CH5e86016c8b894d9d97': undefined } ] const reducer = function (acc, item) { for (const _key in item) { acc.push({ 'id': _key, 'content': item[_key] }) } return acc; } console.log(array.reduce(reducer, []))