数组Swift

时间:2015-10-25 15:37:23

标签: ios arrays swift sum

我有一个基本的Int array

Array = [8, 9, 8]

如何逐步对所有值求和,以使最终结果看起来像这样

EndResult = [8, 17, 25]

尝试使用for和while循环,但无济于事。

注意:基本array[0] + array[1]建议不起作用。我正在寻找像循环解决方案一样自动化的东西。

期待您的建议。

谢谢!

3 个答案:

答案 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