Um zu wissen, ob ein einfaches Array Duplikate enthält, können wir den ersten und den letzten Index mit demselben Wert vergleichen:
Die Funktion:
var hasDupsSimple = function(array) {
return array.some(function(value) {
return array.indexOf(value) !== array.lastIndexOf(value);
})
}
Tests:
hasDupsSimple([1,2,3,4,2,7])
hasDupsSimple([1,2,3,4,8,7])
hasDupsSimple([1,"hello",3,"bye","hello",7])
Für ein Array von Objekten müssen wir zuerst die Objektwerte in ein einfaches Array konvertieren:
Konvertieren eines Array von Objekten in ein einfaches Array mit map
:
var hasDupsObjects = function(array) {
return array.map(function(value) {
return value.suit + value.rank
}).some(function(value, index, array) {
return array.indexOf(value) !== array.lastIndexOf(value);
})
}
Tests:
var cardHand = [
{ "suit":"spades", "rank":"ten" },
{ "suit":"diamonds", "rank":"ace" },
{ "suit":"hearts", "rank":"ten" },
{ "suit":"clubs", "rank":"two" },
{ "suit":"spades", "rank":"three" },
]
hasDupsObjects(cardHand);
var cardHand2 = [
{ "suit":"spades", "rank":"ten" },
{ "suit":"diamonds", "rank":"ace" },
{ "suit":"hearts", "rank":"ten" },
{ "suit":"clubs", "rank":"two" },
{ "suit":"spades", "rank":"ten" },
]
hasDupsObjects(cardHand2);
arr = [9, 9, 9, 111, 2, 3, 3, 3, 4, 4, 5, 7];
Diese Frage befasst sich mit einer Reihe von Grundelementen ( ), und dies betrifft die Dedupierung basierend auf den Eigenschaften von Objekten. Vielleicht semantisch, aber die beiden Antworten mit den höchsten Stimmen sprechen diesen Fall nicht genau an./giphy the more you know
(Mir ist klar, dass das nichts bringt)