在Swift 4中使用索引进行map / reduce

时间:2018-03-06 22:28:34

标签: swift dictionary reduce

如何在Swift 4中以更优雅的方式完成以下内容,例如使用map和/或reduce。

我为了在这里发布而简化了代码,但请注意它确实需要使用索引。

var numbers = [50, 20, 70, 80, 90]
var result = [0,0,0]
for number in numbers {
  for i in 0...2 {
    result[i] += number + i
  } 
}

最终结果应为:

[Int] = 3 values {
  [0] = 310
  [1] = 315
  [2] = 320
}

1 个答案:

答案 0 :(得分:3)

这是等效的

let result = (0...2).map({ index in numbers.reduce(0) { (sum, current) in sum + current + index } })

或者如果你想使用result数组

let r = result.enumerated().map({ (index, _) in numbers.reduce(0) { (sum, current) in sum + current + index } })

但效率会更高

let sum = numbers.reduce(0, +)
let resultsExpected = 3
let result = (0..<resultsExpected).map({ $0 * numbers.count + sum })