arrays - 如何从数组中获取第一个匹配项

标签 arrays ruby

给定一个数组:[1, 2, 3, 5, 8. 13]

我可以选择大于 3 的所有项目:

[1, 2, 3, 5, 8. 13].select { |num| num > 3 }

(我知道简写 select(&:>) 语法,这不是这里的重点)

我现在可以轻松返回第一个。

[1, 2, 3, 5, 8. 13].select { |num| num > 3 }.first

但是当实际比较重的时候,这个效率就不是很高了。我正在尝试优化我们有 300 多个项目的数组的情况,选择将在几乎所有情况下返回第一个(并且数组已经排序)。此外,我们进行比较的代码非常繁重(例如,需要往返数据库)。

是否有 ruby​​ 速记来获取第一个然后停止?类似于:

[1, 2, 3, 5, 8. 13].each do |num|
   return num if num > 3
end

最佳答案

只需使用 find :

[1, 2, 3, 5, 8, 13].find { |num| num > 3 }
#=> 5

关于arrays - 如何从数组中获取第一个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32445185/

相关文章:

ruby-on-rails - 如何在 Linux 中管理 ruby gem ?

ruby - 在 Ruby 中提取字符串中的所有 url

java - 是否可以对二维数组的第一列进行排序,但在java中保持相应的值相同

javascript - 一日一事件仅适用于日历引导年

c++ - 将整数传递给函数内的数组(不带指针)

arrays - 将数组写入单元格

java - 如何使用二维数组创建方法

ruby - 如何在 ruby​​ 中将符号作为 post 请求的参数传递?

ruby-on-rails - 用于 ruby​​/rails 的自然语言日期解析器

ruby - gem install bson 在 Windows 10 上失败