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)
Ç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? –
\ n sadece oyun alanında görünür. –
O gerçek bir projenin içinde ortadan kalkacak, benim projemde işe yaradı. Çok teşekkürler! –