如何使用 Reduce 方法 Swift 找到匹配的数字计数



例如,我想计算匹配的 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])

最新更新