Maison >interface Web >js tutoriel >Comment supprimer efficacement les objets en double d'un tableau en JavaScript ?

Comment supprimer efficacement les objets en double d'un tableau en JavaScript ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-19 06:10:54674parcourir

How to Efficiently Remove Duplicate Objects from an Array in JavaScript?

Comment supprimer des objets en double d'un tableau

Lorsque vous travaillez avec un tableau d'objets, il est souvent nécessaire de supprimer les doublons. La méthode de filtrage ES6 fournit une solution élégante pour cette tâche.

ES6 Magic

obj.arr = obj.arr.filter((value, index, self ) =>
index === self.findIndex((t) => (

t.place === value.place && t.name === value.name

))
)

Ce code compare chaque élément du tableau avec tous les éléments suivants. Si un doublon est trouvé, il est filtré.

Solution générique

Pour une approche plus générique :

const uniqueArray = obj. arr.filter((valeur, index) => {
const _value = JSON.stringify(value);
return index === obj.arr.findIndex(obj => {

return JSON.stringify(obj) === _value;

});
});

Cette stratégie sérialise chaque objet en une chaîne et compare les chaînes pour identifier doublons.

Comparaison basée sur les propriétés

Utilisation de la stratégie de propriété :

const getUniqueItemsByProperties = (items, propNames) =>
items.filter((item, index, array) =>

index === array.findIndex(foundItem => isPropValuesEqual(foundItem, item, propNames))

);

Cette approche offre une flexibilité dans la spécification des propriétés sur lesquelles l'unicité est déterminée .

Propriété enveloppée Strategy

Pour autoriser à la fois les noms de tableaux et de propriétés uniques :

const getUniqueItemsByProperties = (items, propNames) => {
const propNamesArray = Array.from(propNames);

return items.filter((item, index, array) =>

index === array.findIndex(foundItem => isPropValuesEqual(foundItem, item, propNamesArray))

);
};

Explication

L'idée clé ici est d'utiliser la méthode de filtrage pour identifier les doublons. Les critères d'unicité sont déterminés par la logique de comparaison, qui peut être personnalisée en fonction des propriétés de l'objet ou d'une stratégie de sérialisation.

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