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

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

DDD
DDDoriginal
2024-12-21 19:53:12319parcourir

How Can I Efficiently Remove Duplicate Objects from an Array in JavaScript?

Suppression des doublons d'un tableau d'objets : une exploration détaillée

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 :

  • filtre : Sélectionne les éléments du tableau qui répondent à un condition.
  • findIndex : Renvoie l'index du premier élément du tableau qui remplit la condition.
  • Comparaison de propriétés : Détermine si deux objets avoir des valeurs identiques pour un ensemble de propriétés spécifiées.

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!

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