Maison >interface Web >js tutoriel >Comment puis-je regrouper un tableau d'objets par une propriété spécifique et consolider d'autres propriétés dans des tableaux ?

Comment puis-je regrouper un tableau d'objets par une propriété spécifique et consolider d'autres propriétés dans des tableaux ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-15 12:08:14465parcourir

How can I group an array of objects by a specific property and consolidate other properties into arrays?

Regroupement des éléments du tableau par propriété d'objet

Étant donné un tableau d'objets avec des propriétés de groupe et de couleur, l'objectif est de regrouper les éléments par leurs valeurs de groupe, en consolidant la couleur valeurs pour chaque groupe.

Problème

Le tableau fourni ressemble à ceci :

myArray = [
  {group: "one", color: "red"},
  {group: "two", color: "blue"},
  {group: "one", color: "green"},
  {group: "one", color: "black"}
]

Le résultat souhaité est un tableau comme celui-ci :

myArray = [
  {group: "one", color: ["red", "green", "black"]},
  {group: "two", color: ["blue"]}
]

Solution

  1. Créer une carte des noms de groupe en valeurs : Utilisez la méthode réduire() pour créer un mappage des noms de groupe vers des tableaux de couleurs.
  2. Transformer au format souhaité : Créez un nouveau tableau en parcourant les clés de la carte et en créant un objet pour chaque groupe, avec sa propriété de groupe définie sur la clé et sa propriété de couleur définie au tableau de couleurs associé à cette clé.

Vous trouverez ci-dessous une implémentation JavaScript :

var myArray = [
    {group: "one", color: "red"},
    {group: "two", color: "blue"},
    {group: "one", color: "green"},
    {group: "one", color: "black"}
];

var group_to_values = myArray.reduce(function (obj, item) {
    obj[item.group] = obj[item.group] || [];
    obj[item.group].push(item.color);
    return obj;
}, {});

var groups = Object.keys(group_to_values).map(function (key) {
    return {group: key, color: group_to_values[key]};
});

console.log("groups:");
console.log(JSON.stringify(groups, null, 4));

Ce code crée la sortie souhaitée, avec les éléments regroupés par leur propriété de groupe et leurs valeurs de couleur consolidées dans des tableaux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn