查詢陣列的最小或最大元素
Version = 2.2
你可以使用 minElement()
和 maxElement()
方法查詢給定序列中的最小或最大元素。例如,使用陣列:
let numbers = [2, 6, 1, 25, 13, 7, 9]
let minimumNumber = numbers.minElement() // Optional(1)
let maximumNumber = numbers.maxElement() // Optional(25)
Version >= 3.0
從 Swift 3 開始,這些方法分別被重新命名為 min()
和 max()
:
let minimumNumber = numbers.min() // Optional(1)
let maximumNumber = numbers.max() // Optional(25)
這些方法返回的值是可選的, 以反映陣列可能為空的事實 - 如果是,則返回 nil
。
注意:上述方法要求元素符合
Comparable
協議。
使用自定義順序查詢最小或最大元素
你還可以將上述方法與自定義閉包一起使用 ,定義是否應在另一個元素之前對其進行排序,從而允許你在陣列中找到元素不一定是 Comparable
的最小或最大元素。
例如,使用向量陣列:
struct Vector2 {
let dx : Double
let dy : Double
var magnitude : Double {return sqrt(dx*dx+dy*dy)}
}
let vectors = [Vector2(dx: 3, dy: 2), Vector2(dx: 1, dy: 1), Vector2(dx: 2, dy: 2)]
Version = 2.2
// Vector2(dx: 1.0, dy: 1.0)
let lowestMagnitudeVec2 = vectors.minElement { $0.magnitude < $1.magnitude }
// Vector2(dx: 3.0, dy: 2.0)
let highestMagnitudeVec2 = vectors.maxElement { $0.magnitude < $1.magnitude }
Version >= 3.0
let lowestMagnitudeVec2 = vectors.min { $0.magnitude < $1.magnitude }
let highestMagnitudeVec2 = vectors.max { $0.magnitude < $1.magnitude }