2017-07-31 105 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 
相關問題