Estoy tratando de fusionar una matriz de objetos después de que una condición sea verdadera. Traté de usar la función de reducción, pero no estoy seguro de que sea la forma correcta.
Esta es mi matriz de objetos:
[ { "Profile number": "S12", "Line Number": "5874", "Name": "Pillow", "Color": "White", }, { "Profile number": "S12", "Line Number": "5874", "Name": "Blanket", "Color": "Blue", }, { "Profile number": "S12", "Line Number": "5874", "Name": "Pillowcase", "Color": "White", }, { "Profile number": "S41", "Line Number": "8730", "Name": "Curtain", "Color": "White", } ]
Lo que quiero hacer aquí es que si el número de perfil es el mismo, deberían fusionarse así:
[ { "Profile number": "S12", "Line Number": "5874", "Name": "Pillow", "Color": "White", "Name2": "Blanket", "Color2": "Blue", "Name3": "Pillowcase", "Color3": "White", }, { "Profile number": "S41", "Line Number": "8730", "Name": "Curtain", "Color": "White", } ]
¿Cómo debo abordar esto?
Muchas gracias,
Te sugiero una solución con un resultado diferente al que esperas. Creo que sería mejor.
const data=[{"Profile number":"S12","Line Number":"5874",Name:"Pillow",Color:"White"},{"Profile number":"S12","Line Number":"5874",Name:"Blanket",Color:"Blue"},{"Profile number":"S12","Line Number":"5874",Name:"Pillowcase",Color:"White"},{"Profile number":"S41","Line Number":"8730",Name:"Curtain",Color:"White"}]; const result = Object.values(data.reduce((acc, { 'Profile number': profileNumber, 'Line Number': lineNumber, Name, Color }) => { acc[profileNumber] ??= { profileNumber, lineNumber, names: [], colors: [] }; acc[profileNumber].names.push(Name); acc[profileNumber].colors.push(Color); return acc; }, {})); console.log(result); // [{ // "profileNumber": "S12", // "lineNumber": "5874", // "names": ["Pillow", "Blanket", "Pillowcase"], // "colors": ["White", "Blue","White"] // }, // { // "profileNumber": "S41", // "lineNumber": "8730", // "names": ["Curtain"], // "colors": ["White"] // }]
.as-console-wrapper { max-height: 100% !important; top: 0; }