Swift 有一个很棒的函数 .reduce,它可以提供整个数组的运行总计:
let array = [1, 2, 3, 4, 5]
let addResult = array.reduce(0) { $0 + $1 }
// addResult is 15
let multiplyResult = array.reduce(1) { $0 * $1 }
// multiplyResult is 120
但是有没有一种简单的方法可以将其用于仅达到特定元素的运行总计?例如,对于 [1, 2, 3, 4, 5] 数组,有没有办法使用 .reduce 函数仅返回最多第三项的运行总计 (1+2+3=6)?
(我知道我总是可以做一个循环,只是尝试快速学习所有可能性)
最佳答案
除了使用数组的 reduce
方法(如 @MartinR 的答案)之外,还可以将全局 reduce
函数与 enumerate
一起使用
enumerate
函数返回一个元组序列,其第一个元素(名为 index
)是元素索引,第二个元素(名为 element
) ) 是元素值。
因此您可以使用以下代码获得相同的结果:
let sum = reduce(enumerate(array), 0) {
$0 + ($1.index < 3 ? $1.element : 0)
}
此方法的优点是您可以应用更复杂的规则来排除元素 - 例如,对具有偶数索引的所有元素求和:
let sum = reduce(enumerate(array), 0) {
$0 + ($1.index % 2 == 0 ? $1.element : 0)
}
关于ios - Swift 数组运行总计 x 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28250560/