如何计算具有不同条件的 Swift 对象数组中某个元素的出现次数
How to count occurrences of an element in a Swift array of objects with different conditions
我正在对元素属性的内容进行测试以计算出现次数
例如,对于一个简单的字符串数组,当我想用一个条件进行测试时,这个例子工作得很好:
counts[item.id] = (counts[item.id] ?? 0) + 1
但是我的问题是,如何在不同的条件下进行相同的测试,不仅要测试 item.id,我还想用 item.email 进行测试。是不是像这样
counts[item.id] = (counts[item.id] && counts[item.email] = (counts[item.email] ?? 0) + 1
这是我要在其中添加键值的数组,键作为对象的元素,值作为出现次数
这里有一个明显的例子
let arr = [Student, Student, Student, Student]
var counts: [String: Int] = [:]
for item in arr {
counts[item.id] = (counts[item.id] ?? 0) + 1
}
for (key, value) in counts {
print("\(key) occurs \(value) time(s)")
}
output:
44442 occurs 1 time(s)
34434 occurs 1 time(s)
22222 occurs 2 time(s)
谢谢你的帮助。
答案非常简单,它在我的 class 的扩展中,并通过添加 Equatable,
extension notificationManager: Equatable {
static func ==(lhs: notificationManager, rhs: notificationManager) -> Bool {
return lhs.fromwho.username == rhs.fromwho.username && lhs.forwho.username == rhs.forwho.username && lhs.activity.objectId == rhs.activity.objectId
}}
然后我只添加计数
for item in orignalNotifs {
notificationManager.Notifcounts[item] = (notificationManager.Notifcounts[item] ?? 0) + 1
}
我正在对元素属性的内容进行测试以计算出现次数
例如,对于一个简单的字符串数组,当我想用一个条件进行测试时,这个例子工作得很好:
counts[item.id] = (counts[item.id] ?? 0) + 1
但是我的问题是,如何在不同的条件下进行相同的测试,不仅要测试 item.id,我还想用 item.email 进行测试。是不是像这样
counts[item.id] = (counts[item.id] && counts[item.email] = (counts[item.email] ?? 0) + 1
这是我要在其中添加键值的数组,键作为对象的元素,值作为出现次数
这里有一个明显的例子
let arr = [Student, Student, Student, Student]
var counts: [String: Int] = [:]
for item in arr {
counts[item.id] = (counts[item.id] ?? 0) + 1
}
for (key, value) in counts {
print("\(key) occurs \(value) time(s)")
}
output:
44442 occurs 1 time(s)
34434 occurs 1 time(s)
22222 occurs 2 time(s)
谢谢你的帮助。
答案非常简单,它在我的 class 的扩展中,并通过添加 Equatable,
extension notificationManager: Equatable {
static func ==(lhs: notificationManager, rhs: notificationManager) -> Bool {
return lhs.fromwho.username == rhs.fromwho.username && lhs.forwho.username == rhs.forwho.username && lhs.activity.objectId == rhs.activity.objectId
}}
然后我只添加计数
for item in orignalNotifs {
notificationManager.Notifcounts[item] = (notificationManager.Notifcounts[item] ?? 0) + 1
}