根据前一个元素的每个值的百分比差异创建一个数组

WH4*_*H48 0 arrays flatmap swift

我有一个如下数组:

var array: [Double] = [4, 5, 2, 4, 3, 6]
Run Code Online (Sandbox Code Playgroud)

我想要做的是从这个数组创建一个新数组,其中包含每个值与前一个值相比的百分比差异.所以我上面的数组看起来像:

var newArray = [0, 25, -60, 100, -25, 100]
Run Code Online (Sandbox Code Playgroud)

如果这有道理?非常感谢任何帮助,非常感谢!!

Mar*_*n R 6

这可以通过zip()枚举相邻的数组元素来方便地完成:

let array: [Double] = [4, 5, 2, 4, 3, 6]

let percentages = [0] + zip(array, array.dropFirst()).map {
    (old, new) in
    return 100.0 * (new - old) / old
}

print(percentages) // [0.0, 25.0, -60.0, 100.0, -25.0, 100.0]
Run Code Online (Sandbox Code Playgroud)

(假设没有数组元素为零.)

或者使用简写语法:

let percentages = [0] + zip(array, array.dropFirst()).map {
    100.0 * ($1 - $0) / $0
}
Run Code Online (Sandbox Code Playgroud)