我有一个对象数组:
struct Person {
let name: String
let dateOfBirth: Date
let money: Double
}
它包含人员以及他们收到或花费了多少钱。 该数组包含 54 个这样的对象。 我需要找到所有具有相同名称和日期字段的对象并对它们的金额求和。也就是说,最后,我必须在我的数组中获得少于 54 条记录。
例子: 在数组中,有 3 个对象为 John 的记录。例如,他首先收到 15.0 美元,然后花费 7.0 美元,最后收到 4.0 美元。对于我的任务,我需要在数组中有 1 条记录而不是 3 条记录(归档为 $12.0 的钱)
有人知道吗?
最佳答案
您可以循环遍历数组并将它们添加到字典中,其中与出生日期相连的姓名将是键,钱的总和将是值。
假设包含 Person
对象的数组称为 people
:
var moneyDictionary = [String:Double]()
for person in people {
let personKey = "\(person.name)\(person.dateOfBirth)"
if let personRecord = moneyDictionary[personKey] {
moneyDictionary[personKey] = personRecord + person.money
} else {
moneyDictionary[personKey] = person.money
}
}
关于ios - 如何在 Swift 中按条件组合数组中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45353028/