iOS Swift:如何返回键值多维数组中的最大值?

时间:2017-08-09 06:40:44

标签: ios arrays

让我解释一下,假设我有这个数组:

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 (四舍五入)。

我怎样才能做到这一点?

2 个答案:

答案 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)