ios - 如何在 Swift 中按条件组合数组中的对象?

标签 ios arrays swift sorting

我有一个对象数组:

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/

相关文章:

ios - iAd 不显示广告

ios - 快速 NSData 解档

ios - NSKeyedArchiver 调用encodeObject 时如何捕获 EXC_BAD_ACCESS

java - 在二维数组中查找重复值

swift - 使用队列和信号量进行并发和属性包装?

ios - 离开 ViewController 时停止 AVCaptureSession

ios - 字体不会加载到 iOS 应用程序中(在 Xcode 中看不到)

c - 检查值是否在数组中的函数

Java JSONArray JSONObject ["NI"] 未找到

ios - 如何在观看之前准备内容?