Regrouper et agréger efficacement des objets dans un tableau par plusieurs propriétés
Dans cet article, nous abordons une tâche critique : regrouper des objets dans un tableau par plusieurs propriétés et en agrégeant leurs valeurs.
Le Défi
Regrouper des objets dans des tableaux en fonction de plusieurs critères peut être un problème déroutant. Bien que les solutions existantes puissent regrouper les objets selon plusieurs clés, elles ne parviennent souvent pas à combiner et à éliminer efficacement les doublons. Notre objectif est de créer une solution qui regroupe de manière transparente les objets par forme et couleur, additionne leurs valeurs respectives « utilisées » et « instances » et élimine les doublons.
La solution
Notre approche utilise la méthode array.reduce() en conjonction avec un objet assistant. Pour chaque objet du tableau, nous construisons une clé unique en concaténant sa forme et sa couleur. On vérifie ensuite si cette clé existe dans notre objet helper :
En utilisant un objet d'assistance pour suivre les combinaisons uniques de forme et de couleur, nous regroupons et agrégeons efficacement les objets tout en éliminant les doublons.
var arr = [{"shape":"square","color":"red","used":1,"instances":1}, {"shape":"square","color":"red","used":2,"instances":1}, {"shape":"circle","color":"blue","used":0,"instances":0}, {"shape":"square","color":"blue","used":4,"instances":4}, {"shape":"circle","color":"red","used":1,"instances":1}, {"shape":"circle","color":"red","used":1,"instances":0}, {"shape":"square","color":"blue","used":4,"instances":5}, {"shape":"square","color":"red","used":2,"instances":1} ]; var helper = {}; var result = arr.reduce(function(r, o) { var key = o.shape + '-' + o.color; if(!helper[key]) { helper[key] = Object.assign({}, o); // create a copy of o r.push(helper[key]); } else { helper[key].used += o.used; helper[key].instances += o.instances; } return r; }, []); console.log(result);
Le résultat
En mettant en œuvre cette solution, nous obtenons le résultat souhaité résultat :
[{"shape":"square","color":"red","used":5,"instances":3}, {"shape":"circle","color":"red","used":2,"instances":1}, {"shape":"square","color":"blue","used":11,"instances":9}, {"shape":"circle","color":"blue","used":0,"instances":0}]
Cela regroupe efficacement les objets par forme et couleur, résume leurs valeurs et supprime les doublons.
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!