Cet article se penche sur un problème courant rencontré lorsque l'on travaille avec des tableaux d'objets : la suppression des entrées en double. Notre objectif est de fournir une compréhension approfondie des meilleures méthodes pour accomplir cette tâche.
Énoncé du problème
Considérez l'objet suivant :
obj = {}; obj.arr = new Array(); obj.arr.push({place: "here", name: "stuff"}); obj.arr.push({place: "there", name: "morestuff"}); obj.arr.push({place: "there", name: "morestuff"});
Notre objectif est de supprimer les objets en double d'obj.arr afin qu'il ne contienne que des éléments uniques.
ES6 Magie
En tirant parti de la puissance d'ES6, nous pouvons utiliser une solution unique :
obj.arr = obj.arr.filter((value, index, self) => index === self.findIndex((t) => ( t.place === value.place && t.name === value.name )) );
Approche générique
Pour une solution plus polyvalente, considérez le code suivant :
const uniqueArray = obj.arr.filter((value, index) => { const _value = JSON.stringify(value); return index === obj.arr.findIndex(obj => { return JSON.stringify(obj) === _value; }); });
Property Stratégie
Une approche alternative consiste à comparer les propriétés des objets :
const isPropValuesEqual = (subject, target, propNames) => propNames.every(propName => subject[propName] === target[propName]); const getUniqueItemsByProperties = (items, propNames) => items.filter((item, index, array) => index === array.findIndex(foundItem => isPropValuesEqual(foundItem, item, propNames)) );
Explication
Les solutions fournies utilisent les éléments suivants concepts :
En employant ces stratégies, nous pouvons supprimer efficacement les objets en double d'un tableau, garantissant que chaque élément est unique.
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!