Returns the minimum element in the sequence, using the given predicate as the comparison between elements.
SDK
- Xcode 9.0+
Framework
- Swift Standard Library
Declaration
@warn_unqualified_access func min(by areInIncreasingOrder: (Self.Element, Self.Element) throws -> Bool) rethrows -> Self.Element?
Parameters
areInIncreasingOrderA predicate that returns
trueif its first argument should be ordered before its second argument; otherwise,false.
Return Value
The sequence’s minimum element, according to are. If the sequence has no elements, returns nil.
Discussion
The predicate must be a strict weak ordering over the elements. That is, for any elements a, b, and c, the following conditions must hold:
areis alwaysIn Increasing Order(a, a) false. (Irreflexivity)If
areandIn Increasing Order(a, b) areare bothIn Increasing Order(b, c) true, thenareis alsoIn Increasing Order(a, c) true. (Transitive comparability)Two elements are incomparable if neither is ordered before the other according to the predicate. If
aandbare incomparable, andbandcare incomparable, thenaandcare also incomparable. (Transitive incomparability)
This example shows how to use the min(by:) method on a dictionary to find the key-value pair with the lowest value.
let hues = ["Heliotrope": 296, "Coral": 16, "Aquamarine": 156]
let leastHue = hues.min { a, b in a.value < b.value }
print(leastHue)
// Prints "Optional(("Coral", 16))"
Complexity: O(n), where n is the length of the sequence.