您可以進行如下操作。
獲取陣列的第一列:
let firstColumn = testArray.map { $0[0] }
print(firstColumn) // [0.0, 1000.0, 3000.0, 4000.0]
限制到那些小於或等於 給定量的元素:
let filtered = firstColumn.filter { $0 <= income }
print(filtered) // [0.0, 1000.0, 3000.0]
獲取過濾陣列的最大元件。如果要素 排序遞增的順序,那麼你可以使用last
代替max()
:
let result = filtered.max()!
// Or: let result = filtered.last!
print(result) // 3000.0
全部放在一起:
let result = testArray.map { $0[0] }.filter { $0 <= income }.max()!
print(result) // 3000.0
一個可能的優化是map
和filter
結合成 flatMap
:
let result = testArray.flatMap { $0[0] <= income ? $0[0] : nil }.max()!
print(result) // 3000.0
This c ode假定至少有一個匹配元素,否則last!
或max()!
會崩潰。如果不能保證:
if let result = testArray.flatMap({ $0[0] <= income ? $0[0] : nil }).max() {
print(result) // 3000.0
} else {
print("no result")
}
或提供(在這個例子中0.0
)默認值:
let result = testArray.flatMap({ $0[0] <= income ? $0[0] : nil }).max() ?? 0.0
print(result) // 3000.0
感謝您的幫助! – fbelfort