我有一个浮点值数组:
let array:[Double] = [2270.87, 2285.15, 2273.49, 2312.89, 2323.07, 2336.14, 2355.09, 2633.0, 2671.34]
Run Code Online (Sandbox Code Playgroud)
我需要使用快速高阶函数或数组扩展的单行逻辑来从值之间的所有差异中找到最小差异值。
我尝试过,但无法继续前进:
let array = [2270.87, 2285.15, 2273.49, 2312.89, 2323.07, 2336.14, 2355.09, 2633.0, 2671.34]
let minDiff = array.map( { *All differences between array of values* } ).reduce(0, min)
Run Code Online (Sandbox Code Playgroud)
实际上我在图表中显示了这些值。所以我想要值之间的绝对波动最小。在上面的例子中,2323.07 和 2336.14 的最小波动为 10.18。
您可以使用zip两个数组,其中第二个数组没有第一个元素。然后,您可以从索引x的值中获取索引x + 1abs的减法值,并使用您可以从所有这些绝对值中获取最小值。map()
zip(array, array.dropFirst()).map { abs($1 - $0) }.min() // 10.180000000000291
Run Code Online (Sandbox Code Playgroud)