Le problème peut être simplifié en supprimant les doublons de la liste de contrôle. thing
le tableau.
Vous pouvez mettre en œuvre une solution O(n) plus rapide (en supposant que la consultation des clés natives est négligeable) en utilisant un objet pour à la fois maintenir les critères uniques en tant que clés et stocker les valeurs associées.
En gros, l'idée est de stocker tous les objets par leur clé unique, de sorte que les doublons s'écrasent eux-mêmes :
const thing = [{ place: "here", name:"stuff" }, { place: "there", name:"morestuff" }, { place: "there", name:"morestuff" } ]
const uniques = {}
for (const t of thing) {
const key = t.place + '$' + t.name // Or whatever string criteria you want, which can be generified as Object.keys(t).join("$")
uniques[key] = t // Last duplicate wins
}
const uniqueThing = Object.values(uniques)
console.log(uniqueThing)
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.