让我解释一下,假设我有这个数组:
var dateDouble_ARRAY = [Date : [Double] ]()
dateDouble_ARRAY = [2017-08-06 07:00:00 +0000: [11.880000000000001, 3.0],
2017-08-08 07:00:00 +0000: [5.0],
2017-08-01 07:00:00 +0000: [6.0],
2017-08-09 07:00:00 +0000: [6.0],
2017-08-02 07:00:00 +0000: [5.0],
2017-08-03 07:00:00 +0000: [6.5499999999999998],
2017-08-10 07:00:00 +0000: [2.0] ]
每个Date
键的值可能包含多个Double
个数字。
我想知道的是如何找到这个数组中最大的值?
例如,在这种情况下,最大值为11.880000000000001 + 3.0
= 14.88 (舍入),因为键值对包含2个Double
值,并且 14.88 比任何其他键值对都大。
但是,如果数组包含:
dateDouble_ARRAY = [2017-08-06 07:00:00 +0000: [3.0],
2017-08-08 07:00:00 +0000: [5.0],
2017-08-01 07:00:00 +0000: [6.0],
2017-08-09 07:00:00 +0000: [6.0],
2017-08-02 07:00:00 +0000: [5.0],
2017-08-03 07:00:00 +0000: [6.5499999999999998],
2017-08-10 07:00:00 +0000: [2.0] ]
然后最大值将是 6.55 (四舍五入)。
我怎样才能做到这一点?
答案 0 :(得分:2)
试试这个
let maxValue = dateDouble_ARRAY.values.map({$0.reduce(0,+)}).max()
如果你想要围绕
let maxValue = dateDouble_ARRAY.values.map({yourRoundMethod($0.reduce(0,+))}).max()
<强>测试强>
<强> 输入 强>
[2016-02-02 08:00:00 +0000:[2],2016-05-01 08:00:00 +0000:[5,6],2016-03-02 08:00:00 +0000:[3,4],2016-01-02 08:00:00 +0000:[0,1]]
<强> 结果 强>
11
希望这有帮助
答案 1 :(得分:0)
reduce然后减少一些
let value = dateDouble_ARRAY.values.reduce(0){max($0, $1.reduce(0,+))}
print(value)