As Marco我想說一個字典可能是更好的數據結構使用,但如果你堅持保存在一個元組數組中,你可以使用一些更高階的函數瘋狂,Swift 2(爲什麼你會用1.2?):
let array = [(2014,3),(2014,2),(2014,6),(2015,8),(2015,5)]
let keys = Set(array.map{return $0.0})
let result = keys.map{(k:Int) -> (Int,Int) in (k, array.filter{ $0.0 == k }.map{ $0.1 }.reduce(0, combine:+))}
print(result)
結果
[(2014, 11), (2015, 13)]
注意到,一組不保證其內容的順序。實際上它沒有秩序。 爲了確保您可以使用sort{$0.0 < $1.0}
let result = keys.map{(k:Int) -> (Int,Int) in (k, array.filter{ $0.0 == k }.map{ $0.1 }.reduce(0, combine:+))}.sort{$0.0 < $1.0}
一個優點在字典中的解決方案是排序的功能順序。
let result = ....sort{$0.0 < $1.0}
- >[(2014, 11), (2015, 13)]
let result = ....sort{$0.0 > $1.0}
- >[(2015, 13), (2014, 11)]
let result = ....sort{$0.1 > $1.1}
- >[(2015, 13), (2014, 11)]
let result = ....sort{$0.1 < $1.1}
- >[(2014, 11), (2015, 13)]
該代碼甚至沒有編譯... –
這是一種大學任務嗎?如果代碼至少可以做某些事情,它可以幫助獲得更好的答案。 – courteouselk