这是我的阵列:
array = [100.0, 10.0, 250.0, 360.0]
最终的数字是总数并且与我想要的效果很好,但是,我真正想要的是:
array = [100.0, 110.0, 360.0]
更多的话我希望起始值保持不变,然后每个附加值都是前一个值+下一个值的总和...
任何帮助都会很棒。我开始写一个for语句,但我不知道如何为每个语句提高索引?我觉得它像i ++?
谢谢
答案 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)