一尘不染

查找数组中最近的较小数字

swift

我希望能够在数字数组中找到最接近的较小值。例如,如果我有:

[1, 4, 6, 9, 14, 39]

我正在寻找小于以下值的最接近值:

8

该函数将返回:

6

另外,如果我传递的数字大于数组中的最大值,则它应返回最大值。如果我传递的数字小于最小值,则应返回nil。

我尝试使用first数组上的函数执行此操作,但是单独执行此操作不会产生我想要的结果,因为我需要这样的东西:

numbers.first(where: { $0 <= target && $1 < target })

但不幸的是,这是无效的。有什么建议?我知道可以使用while循环轻松完成此操作,但是我希望有一种更干净,更实用的方法。


阅读 263

收藏
2020-07-07

共1个答案

一尘不染

给定数组已排序,您需要

if let value = numbers.last(where: { $0 <= target }) {
  print(value)
}
2020-07-07