GOOGLE ADS

lunes, 18 de abril de 2022

una matriz de objetos se fusionan con la condición if

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,


Solución del problema

Te sugiero una solución con un resultado diferente al que esperabas. 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; }

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...