2017-07-31 103 views
1

目前我有一个定义为var myArray = [(Date, Double)]()的元组数组。如何在Swift中获取元组数组的最大Double值?

myArray输出可能是这个样子:

[(2016-08-30 07:00:00 +0000, 1.0), (2016-09-30 07:00:00 +0000, 0.050000000000000003), 
(2016-10-30 07:00:00 +0000, 20.0), (2017-06-30 07:00:00 +0000, 6.0), 
(2017-07-30 07:00:00 +0000, 5.0)] 

我想从元组的阵列最大Double值,但不知道如何去做。

我看到有一个函数:

myArray.max { (<#(Date, Double)#>, <#(Date, Double)#>) -> Bool in 

} 

不过,我不完全知道如何使用它,如果,即使是用正确的功能?

有人能指出我正确的方向吗?

回答

1

max工作原理类似于sort。你必须通过比较$0 < $1。结果是具有最大值的(可选)元组。

如果你的数据结构可能会持续超过一个临时的范围,模型,可以为:

if let maxItem = myArray.max(by: {$0.1 < $1.1 }) { 
    let maxDouble = maxItem.1 
} 

再次,你是从使用元组作为数据源

documentation气馁一个类或结构,而不是一个元组。

0

您可以采用如下方案

let max = myArray.max { (left, right) -> Bool in 
    return left.1 < right.1 
} 

或者使用$语法

myArray.max { $0.1 < $1.1 } 
0

试试这个:

myArray.max { (val1, val2) -> Bool in 
    return val1.1 < val2.1 
} 
0

该代码给出了从给定数组

var myArray = [(2016-08-30, 1.0), (2016-09-30, 0.050000000000000003), 
(2016-10-30, 20.0), (2017-06-30, 6.0), 
(2017-07-30, 5.0)] 
// Get maximum element 

var max = myArray.max { 
    $0.1 < $1.1 
} 

print(max!.1) 
0

最大双封闭添加到max。 。

let maxTuple = myArray.max{ $0.1 < $1.1 }! 
let maxDouble = maxTuple.1 
相关问题