素早く、既存の配列内の項目を分類し、それを1つの新しい文字列に配置したいと考えています。ここでArray内の項目をすばやく分類する方法を教えてください。
は、私が何をしたいの例です。
originalArray = ["hotdog","fries","hotdog","coke","coke","fries","hotdog"]
resultingString = "hotdog x 3, fries x 2, coke x 2"
は、どのように私はこれを行うに行きますか?
素早く、既存の配列内の項目を分類し、それを1つの新しい文字列に配置したいと考えています。ここでArray内の項目をすばやく分類する方法を教えてください。
は、私が何をしたいの例です。
originalArray = ["hotdog","fries","hotdog","coke","coke","fries","hotdog"]
resultingString = "hotdog x 3, fries x 2, coke x 2"
は、どのように私はこれを行うに行きますか?
このお試しください:私は
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)
:
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(", ")
あなたは配列(すなわち:ホットドッグ、フライドポテト、コーラ)の元の順序を維持したい場合は、コードは少し複雑ですがこれはあなたを助けると思う:ここ
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)
が出力されます。coke x 2, hotdog x 3, fries x 2
あなたのコードも動作しますが、1つのキャッチがあります:resultsStringを出力すると "hotdog x 3、fries x 2、coke x 2 \ n"が返されます。 –
print(resultsString、terminator: "") – iMuzahid
はい、うまくいくようですが、ありがとうございます。 –
これは動作しますが、1つのキャッチで:resultStringを出力すると "hotdog x 3、fries x 2、コークスx 2"と表示されます "どのように"/n "を取り除きますか? –
\ nはプレイグラウンドでのみ表示されます。それは実際のプロジェクトの中で消えるでしょう –
あなたが正しいです、それは私のプロジェクトで働いてしまいました。本当にありがとう! –