数组将以前的索引值添加到下一个索引Swift 3

时间:2017-03-24 16:25:28

标签: arrays swift

这是我的阵列:

array = [100.0, 10.0, 250.0, 360.0]

最终的数字是总数并且与我想要的效果很好,但是,我真正想要的是:

array = [100.0, 110.0, 360.0]

更多的话我希望起始值保持不变,然后每个附加值都是前一个值+下一个值的总和...

任何帮助都会很棒。我开始写一个for语句,但我不知道如何为每个语句提高索引?我觉得它像i ++?

谢谢

4 个答案:

答案 0 :(得分:1)

您可以使用var total来跟踪正在运行的总计,并使用map创建一个新数组,每个项目替换为它的总数和之前的数据:

let array = [100.0, 10.0, 250.0]
var total = 0.0

let result = array.map { value -> Double in total += value; return total }
print(result)
[100.0, 110.0, 360.0]

使用for循环:

这使用for循环来构建result来完成相同的任务:

let array = [100.0, 10.0, 250.0]
var result = [Double]()
var total = 0.0

for value in array {
    total += value
    result.append(total)
}

print(result)
[100.0, 110.0, 360.0]

答案 1 :(得分:0)

您正在寻找一笔运行金额:

let array = [100.0, 10.0, 250.0]
let runningSum = array.reduce([Double]()) { aggregate, element in
    aggregate + [aggregate.last ?? 0 + element]
}

print(runningSum)

答案 2 :(得分:0)

最简单,最直接的方法是使用for循环。

let numbers = [100.0,10.0,250.0]

var sum = [Double]()

for number in numbers{
    sum.append((sum.last ?? 0.0) + number)
}    
// sum : [100.0, 110.0, 360.0]

答案 3 :(得分:-1)

您不会显示如何将这些值添加到数组中,因此我无法给您完整的答案。在哪里添加新值do:

array.append(array.last + newValue)

这会为数组添加一个值,即最后一个值+一个新值。这确实需要对数组进行排序。

编辑:我现在不记得你是否可以在追加时打电话给.last,如果你不能做到这一点:

let last = array.last
array.append(last + newValue)