我希望能够在数字数组中找到最接近的较小值。例如,如果我有:
[1, 4, 6, 9, 14, 39]
我正在寻找小于以下值的最接近值:
8
该函数将返回:
6
另外,如果我传递的数字大于数组中的最大值,则它应返回最大值。如果我传递的数字小于最小值,则应返回nil。
我尝试使用first数组上的函数执行此操作,但是单独执行此操作不会产生我想要的结果,因为我需要这样的东西:
first
numbers.first(where: { $0 <= target && $1 < target })
但不幸的是,这是无效的。有什么建议?我知道可以使用while循环轻松完成此操作,但是我希望有一种更干净,更实用的方法。
给定数组已排序,您需要
if let value = numbers.last(where: { $0 <= target }) { print(value) }