Maison >interface Web >js tutoriel >Comment dédupliquer efficacement des tableaux d'objets en fonction de propriétés spécifiques ?
Déduplication efficace des tableaux d'objets
La suppression des objets en double des tableaux peut être cruciale pour l'intégrité des données et l'optimisation des performances. Cet article explore des méthodes efficaces pour éliminer les doublons des tableaux contenant des objets.
Problème :
Considérons un objet avec un tableau d'objets imbriqués. L'objectif est de supprimer les objets en double en fonction de leurs propriétés « lieu » et « nom ».
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"});
Solution :
Méthode 1 : Filtrage ES6 avec Array.filter et Array.findIndex
obj.arr = obj.arr.filter((value, index, self) => index === self.findIndex((t) => t.place === value.place && t.name === value.name ) );
Cette méthode exploite Array.filter et Array.findIndex pour parcourir le tableau et identifier les doublons. Il renvoie uniquement les objets uniques, en préservant les deux propriétés.
Méthode 2 : Solution générique avec JSON.stringify
const uniqueArray = obj.arr.filter((value, index) => { const _value = JSON.stringify(value); return index === obj.arr.findIndex((obj) => { return JSON.stringify(obj) === _value; }); });
Cette approche compare la représentation JSON des objets à détecter les doublons. Il s'agit d'une solution générique qui peut accueillir des objets avec n'importe quelle structure de propriété.
Méthode 3 : Utilisation de la comparaison d'égalité de propriété personnalisée
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)) );
Cette méthode permet une comparaison de propriété plus personnalisée. . Il utilise une fonction de rappel pour déterminer l'égalité des propriétés et renvoie un ensemble unique d'objets basés sur les propriétés spécifiées.
Explication :
La clé de la déduplication est de trouver les doublons et les excluant du résultat. La fonction findIndex permet d'identifier la première instance d'un objet avec des propriétés spécifiques, tandis que le filtre supprime les doublons qui se produisent par la suite.
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!