2016-03-30 4 views

cevap

2

bu deneyin:

let originalArray = ["hotdog","fries","hotdog","coke","coke","fries","hotdog"] 
var dict = [String: Int]() 

let resultString = originalArray.reduce(dict) { _, element in 
    if dict[element] == nil { 
     dict[element] = 1 
    } else { 
     dict[element]! += 1 
    } 
    return dict 
} 
.map { "\($0) x \($1)" } 
.joinWithSeparator(", ") 

Eğer dizinin orijinal düzeni sağlamak istiyorsanız (yani: sosis, patates kızartması, kola), kod biraz daha karmaşıktır:

let originalArray = ["hotdog","fries","hotdog","coke","coke","fries","hotdog"] 
var dict = [String: (index: Int, count: Int)]() 

let resultString = originalArray.enumerate() 
    .reduce(dict) { _ , e in 
     if let value = dict[e.element] { 
      dict[e.element] = (index: value.index, count: value.count + 1) 
     } else { 
      dict[e.element] = (index: e.index, count: 1) 
     } 
     return dict 
    } 
    .sort { return $0.1.index < $1.1.index } 
    .map { "\($0) x \($1.count)" } 
    .joinWithSeparator(", ") 

print(resultString) 
+0

Çalışıyor, ancak bir yakalama ile: sonuç yazdığımda "hotdog x 3, kızartmalar x 2, kok x 2 \ n" "n/n" yi nasıl kurtarırım? –

+0

\ n sadece oyun alanında görünür. –

+0

O gerçek bir projenin içinde ortadan kalkacak, benim projemde işe yaradı. Çok teşekkürler! –

2

ben Bu size yardımcı olacağını düşünüyorum: coke x 2, hotdog x 3, fries x 2

: Burada
let originalArray = ["hotdog","fries","hotdog","coke","coke","fries","hotdog"] 
var resultingString = "" 
var counts:[String:Int] = [:] 
for item in originalArray { 
    counts[item] = (counts[item] ?? 0) + 1 

} 
resultingString = counts.map { (key, value) -> String in 
    return "\(key) x \(value)" 
}.joinWithSeparator(",") 

print(resultingString) 

çıkışı
+0

kodunuz da çalışır, ancak bir yakalama ile: "hotdog x 3, fries x 2, coke x 2 \ n" döner, sonuçta çıkan sonucu yazdırdığımda, "/ n" den nasıl kurtulurum? –

+0

print (sonuçString, sonlandırıcı: "") – iMuzahid

+0

Evet, işe yarıyor, yardımlarınız için çok teşekkürler! –

İlgili konular