Avez-vous entendu parler de la bibliothèque Lodash ? Je vous recommande cet utilitaire, lorsque vous ne voulez pas vraiment appliquer votre logique au code, et utiliser du code déjà présent qui est optimisé et fiable.
Envisagez de créer un tableau comme celui-ci
things.thing.push({place:"utopia",name:"unicorn"});
things.thing.push({place:"jade_palace",name:"po"});
things.thing.push({place:"jade_palace",name:"tigress"});
things.thing.push({place:"utopia",name:"flying_reindeer"});
things.thing.push({place:"panda_village",name:"po"});
Notez que si vous souhaitez qu'un attribut reste unique, vous pouvez très bien le faire en utilisant la bibliothèque lodash. Ici, vous pouvez utiliser _.uniqBy
.uniqBy(tableau, [iteratee= .identité])
Cette méthode est comme _.uniq (qui renvoie une version sans doublon d'un tableau, dans laquelle seule la première occurrence de chaque élément est conservée) sauf qu'il accepte iteratee qui est invoqué pour chaque élément du tableau afin de générer le critère par lequel l'unicité est calculée.
Ainsi, par exemple, si vous voulez renvoyer un tableau ayant l'attribut unique "lieu".
_.uniqBy(things.thing, 'place')
De même, si vous voulez que l'attribut unique soit 'nom'.
_.uniqBy(choses.chose, 'nom')
J'espère que cela vous aidera.
A la vôtre !
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.