2017-03-21 1 views
-4

Ich möchte doppelte Elemente aus einem Array entfernen. gibt es viele Antworten in Stack-Überlauf, aber für eine rasche 3.So entfernen Sie doppelte Elemente in einem Array - swift 3

mein Array:

var images = [InputSource]() 
... // append to array 

, wie aus diesem Array entfernen doppelte Elemente?

Gibt es eine native API von swift 3?

+0

http://stackoverflow.com/questions/25738817/does-there-exist-within-swifts-api-an-easy-way-to-remove-duplicate-elements-fro hat Antworten für alle Swift-Versionen. –

+2

Was haben Sie aus StackOverflow probiert? Mit welchen Problemen haben Sie konfrontiert? –

+0

http://stackoverflow.com/questions/34709066/remove-duplicate-objects-in-an-array –

Antwort

3

Stellen Sie sicher, dass InputSourceHashable implementiert, sonst kann Swift nicht wissen, welche Elemente gleich sind und welche nicht.

Sie dies nur tun:

let withoutDuplicates = Array(Set(images)) 

Erläuterung:

images wird zuerst in einen Satz gedreht. Dadurch werden alle Duplikate entfernt, da Gruppen nur bestimmte Elemente enthalten können. Dann konvertieren wir den Satz zurück in ein Array.

Laut this answer wird dies wahrscheinlich vom Compiler optimiert.

+0

Wie implementiert ich mein Array als Hashable? –

+0

@ S.M_Emamian Es gibt viele Implementierungen von 'Hashcode'. Die Idee ist, dass jede einzelne Instanz einen anderen Hashcode hat. Wenn zwei Instanzen denselben Hashcode haben, gelten sie als "gleich". Hier ein Beispiel: http://stackoverflow.com/a/34705912/5133585 – Sweeper

+0

@ S.M_Emamian: Beispiel in dieser Antwort http://stackoverflow.com/a/34709118/1187415 zum "Duplikat". –

0

Sie möchten vielleicht Set verwenden

// Initialisieren der Array var sample = [1,2,3,4,5,2,4,1,4,3,6,5]

// Duplikate entfernen: sample = Array(Set(sample))

print(sample)

1

Wenn Auftrag nicht wichtig ist, sollten Sie a Set stattdessen. Sets enthalten nur eindeutige Elemente. Sie können auch eine Set aus dem Array erstellen, die Duplikate beseitigen soll.

Verwandte Themen