2017-03-10 1 views
-2

Ich habe eine [Int] -Array und ich muss für alle Elemente überprüfen, die nicht identisch mit einem anderen Element sind. Diese nicht identischen Elemente möchte ich in ein neues Array einfügen.Swift 3 - überprüfen, wie viele identische Elemente Array-Inhalt

var spojeni1 = [1, 1, 2, 3, 4, 4] // Here it is values 2,3 
var NewArray = [Int]() 
for i in spojeni1 { 
    if { // the value hasn't another identical value in the array 
     NewArray.append(i) 
    } 
} 

Hoffe, dass es klar ist, danke

+3

Es ist klar. Haben Sie hier nach ähnlichen Fragen gesucht? Es sieht so aus, als ob es dieses Jahr mindestens 3-5 Leute gibt, die etwas Ähnliches fragen. – dfd

+0

Ich habe nicht genau dieses Problem gefunden @dfd – johny

+2

Suche. Mögliche Wörter gehören "Swift", "Array-Inhalte" identisch ". Hier ist eine aus" Swift identische Elemente "- http://StackOverflow.com/Questions/29727618/Find-Duplicate-Elements-in-array-using-Swift#35387247 – dfd

Antwort

0

Dies kann in einer einzigen Zeile erfolgen:

let numbers = [1, 1, 2, 3, 4, 4] // Here it is values 2,3 

let uniques = Set(numbers).filter{ (n) in numbers.filter{$0==n}.count == 1 } 
0

Sie können zunächst prüfen, ob eine beliebige Zahl im Array mehr als einmal auftreten, legen Sie dann in einem Satz ansonsten das Element anhängen es die Menge der es nicht enthält:

let numbers = [1, 1, 2, 3, 4, 4] // Here it is values 2,3 
var repeats: Set<Int> = [] 
var uniques: [Int] = [] 
for (index, number) in numbers.enumerated() { 
    if numbers[(numbers.index(index, offsetBy: 1, limitedBy: numbers.endIndex) ?? numbers.endIndex)..<numbers.endIndex].contains(number) { 
     repeats.insert(number) 
    } else if !repeats.contains(number) { 
     uniques.append(number) 
    } 
} 

uniques // 2,3 
0

ich würde die Verwendung von 2 Sets machen:

var seenOnce: Set<Int> = [] 
var seenMorethanOnce: Set<Int> = [] 
let input = [1, 1, 2, 3, 4, 4] 

for number in input 
{ 
    if seenMorethanOnce.contains(number) 
    { 
     // Skip it since it's already been detected as a dupe. 
    } 
    else if seenOnce.contains(number) 
    { 
     // We saw it once, and now we have a dupe. 
     seenOnce.remove(number) 
     seenMorethanOnce.insert(number) 
    } 
    else 
    { 
     // First time seeing this number. 
     seenOnce.insert(number) 
    } 
} 

Wenn die für die Schleife beendet, die seenOnce se t wird Ihre Werte haben, und Sie können dies leicht zu einem Array konvertieren, wenn Sie es wünschen.

Verwandte Themen