Exemple: J'ai besoin de regrouper ce tableau par nom pour obtenir des tableaux séparés comme: p> Je n'ai aucune idée de perfomis cela. Merci! P> p>
3 Réponses :
Vous voulez regrouper les articles par nom, je pense et ne pas les trier. P>
Si c'est ce que vous voulez, vous pouvez créer un dictionnaire intermédiaire avec
array.reduce () code>
, dont les clés sont les noms et les valeurs sont des matrices regroupant tous les objets avec le même nom. P>Alors Utilisez
Object.Values ()
pour énumérer ce dictionnaire et renvoyer tous les groupes: p>p>
const arr = [{name:'Anna', hello: 1}, {name:'Bob'}, {name:'Joe'}, {name:'Anna'}]; const result = Object.values(arr.reduce((acc, x) => { acc[x.name] = [...(acc[x.name] || []), x ]; return acc; }, {})); console.log(result)
Merci beaucoup. J'ai commencé à me faire, mais la fonction était beaucoup plus grosse que la vôtre. Beaucoup appris de votre exemple, merci
Groupe Votre tableau par p> Nom code> Tout d'abord, puis obtenez les valeurs d'objet. Vous pouvez utiliser
Array.Rece
et Object.values Code>
à cet effet var array = [{name:'Anna'}, {name:'Bob'}, {name:'Joe'}, {name:'Anna'}];
const res = array.reduce((acc, item) => {
if (acc[item.name]) {
acc[item.name] = [...acc[item.name], item];
} else {
acc[item.name] = [item];
}
return acc;
}, {});
console.log(Object.values(res));
Il suffit de convertir en objet en fonction de la valeur à l'aide de:
const test = array.reduce((acc, el) => { if (!acc[el.name]) { return { ...acc, [el.name]: [el] } } return { ...acc, [el.name]: [...acc[el.name], el] } }, {});
C'est un regroupement, pas trier i>
Ce n'est pas le tri. C'est filtrer. Le tri signifie tout le contenu de 1 seau. Vous voulez filtrer le contenu de 1 seau dans d'autres. Vous auriez besoin de développer un ensemble de valeurs qui corrélent au nombre de seaux. Le filtre serait exécuté un tas de fois, mais vous pouvez créer une solution plus optimale, puis appelant cette commande n Time
@HindMer, sorte de ...
Plus important encore, où est votre tentative. Qu'essayez-vous?