我有一個對象數組,每個對象都有一個名稱和一個數量。我想掃描數組,如果有任何對象具有相同的名稱,則將所有這些已合併對象的總數減少爲一個對象。是否可以使用高階函數合併數組中的重複對象?
struct AnObject {
var name: String
var quantity: UInt
}
var anArray = [AnObject(name: "one", quantity: 2),
AnObject(name: "two", quantity: 2),
AnObject(name: "one", quantity: 2),
AnObject(name: "one", quantity: 2),
AnObject(name: "two", quantity: 2)]
// something like:
return reduce(anArray,(),{ /* some magic */})
// should return [{"one":6},{"two",4}]
這可以使用繁瑣的for循環創建一個新的陣列來完成,但有沒有與高階功能,如.filter,。降低甚至.MAP做的更多的「功能」的方式?
這是一個很好的答案,但不是我問:-) – 2015-03-03 13:32:33
您可以創建一個擴展其行爲就像'.filter'的問題。但是你需要這些循環。 – 2015-03-03 15:10:59
@DanielCreagh爲什麼呢?考慮到你的'anObject'類型和'anArray'數據集,@ ThomasKilian的解決方案與@ Antonio's的結果相同:http://imgur.com/a/newNP – 2016-12-31 04:11:22