我有一个基本的Int array
Array = [8, 9, 8]
如何逐步对所有值求和,以使最终结果看起来像这样
EndResult = [8, 17, 25]
尝试使用for和while循环,但无济于事。
注意:基本array[0] + array[1]
建议不起作用。我正在寻找像循环解决方案一样自动化的东西。
期待您的建议。
谢谢!
答案 0 :(得分:5)
可能是这样的:
var arr = [8, 9, 8]
for i in 1..<arr.count {
arr[i] += arr[i-1]
}
print(arr)
答案 1 :(得分:2)
可能有比这更好的方法,但它有效
var array = [8, 9, 8]
var result = [Int]()
for i in 0..<array.count{
var temp = 0;
for j in 0...i{
temp+=array[j]
}
result.append(temp)
}
print(result) //[8, 17, 25]
答案 2 :(得分:1)
您可以在Swift中使用reduce函数来完成此任务。请注意,您无法使用map真正做到这一点,因为您需要知道先前对map函数的调用返回了什么,将状态保存在map函数之外的变量中(看起来很脏),或者循环遍历数组地图函数调用。
let array = [8, 9, 8]
let results = array.reduce((0, []), combine: { (reduction: (lastValue: Int, values: Array<Int>), value: Int) in
let newValue = reduction.lastValue + value
return (newValue, reduction.values + [newValue])
}).1