例如,我想计算匹配的 7 和 5 数字
items = [1, 2, 7, 5, 7, 8, 5, 5, 1, 7]
我试过这样的filter
:
items.filter{ $0 == 7 }.count
它有效,但我想知道使用reduce
方法怎么可能?
你可以使用reduce(_:_:)
来获取 7 和 5 的计数,如下所示,
let items = [1, 2, 7, 5, 7, 8, 5, 5, 1, 7]
let count = items.reduce(0) { ($1 == 7) ? $0 + 1 : $0 }
同样,您可以计算 5 的数量。
NSCountedSet
如果要计算元素的出现次数,可以使用NSCountedSet
let items = [1, 2, 7, 5, 7, 8, 5, 5, 1, 7]
let countedSet = NSCountedSet(array: items)
let occurrenciesOf5 = countedSet.count(for: 5) // 3
let occurrenciesOf7 = countedSet.count(for: 7) // 3
您可以使用默认参数:
let counts = items.reduce(into: [:]) { $0[$1, default: 0] += 1 }
这将告诉您每个项目的出现次数。然后,您可以执行过滤器或所需的任何其他操作。
您可以通过传递它来找到任何计数:
print(counts[7])