Je sais qu'il y a déjà une tonne de réponses à cette question, mais soyez indulgent avec moi...
Certains des objets de votre tableau peuvent avoir des propriétés supplémentaires qui ne vous intéressent pas, ou vous voulez simplement trouver les objets uniques. en ne considérant qu'un sous-ensemble des propriétés .
Considérons le tableau ci-dessous. Supposons que l'on veuille trouver les objets uniques de ce tableau en tenant compte uniquement des éléments suivants propOne
y propTwo
et ignore toute autre propriété qui pourrait s'y trouver.
Le résultat attendu ne devrait inclure que le premier et le dernier objet. Voici donc le code :
const array = [{
propOne: 'a',
propTwo: 'b',
propThree: 'I have no part in this...'
},
{
propOne: 'a',
propTwo: 'b',
someOtherProperty: 'no one cares about this...'
},
{
propOne: 'x',
propTwo: 'y',
yetAnotherJunk: 'I am valueless really',
noOneHasThis: 'I have something no one has'
}];
const uniques = [...new Set(
array.map(x => JSON.stringify(((o) => ({
propOne: o.propOne,
propTwo: o.propTwo
}))(x))))
].map(JSON.parse);
console.log(uniques);
0 votes
Voulez-vous dire comment empêcher qu'une table de hachage/un objet avec tous les mêmes paramètres soit ajouté à un tableau ?
9 votes
Mathew -> S'il est plus simple d'empêcher un objet en double d'être ajouté au tableau en premier lieu, au lieu de le filtrer plus tard, oui, ce serait bien aussi.
18 votes
Je suis toujours surpris de voir comment les gens nomment leurs variables. Parfois, je pense qu'ils veulent vraiment rendre les choses inutilement compliquées. La prochaine étape sera
aaaaa.aaaa.push(...)
:)2 votes
Downmodded pour
things.thing
. Cela complique inutilement la question et la réponse.0 votes
Des réponses super longues et pourtant MDN a probablement les réponses les plus courtes :
arrayWithNoDuplicates = Array.from(new Set(myArray))
7 votes
@tonkatata Cela ne fonctionne pas avec les tableaux d'objets.