您可以按照以下方式进行。
获取数组的第一列:
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
此代码假定至少有一个匹配元素,
否则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