L'utilisation reduce
est très utile ici car elle vous permet d'itérer sur le tableau et de conserver une valeur de accumulator
pour stocker les données à chaque itération.
J'ai fixé le acc
est un objet JSON (paires clé-valeur) dans lequel l'élément key
est l'attribut de valeur et l'attribut value
est l'élément résultant avec cette valeur.
En cours de route, s'il n'y a pas d'élément avec la clé donnée dans le fichier acc
Nous ajoutons l'objet tel qu'il est en définissant hobbies
comme un tableau au lieu d'une chaîne.
Sinon, s'il contient un tel objet, nous ajoutons sa valeur à l'objet existant, le hobbies
liste.
Enfin, nous prenons la values
de l'objet résultant qui donne la liste des objets groupés :
const arr = [
{ "value": "1", "hobbies": 'netflix'},
{ "value": "2", "hobbies": 'reading'},
{ "value": "1", "hobbies": 'food'},
];
const res = Object.values(
arr.reduce((acc,item) => {
const { value, hobbies } = item;
acc[value] = acc[value]
? { ...acc[value], hobbies: [...acc[value].hobbies, item.hobbies] }
: { ...item, hobbies: [hobbies] };
console.log(acc);
return acc;
}, {})
);
console.log(res);