开发者社区> 问答> 正文

Ruby Array find_first对象?

我在数组文档中缺少什么吗?我有一个数组,其中包含最多一个满足特定条件的对象。我想有效地找到那个对象。我从文档中得到的最好的主意是:

candidates = my_array.select { |e| e.satisfies_condition? } found_it = candidates.first if !candidates.empty? 但我不满意有两个原因:

select即使我可以在第一次命中后保释,这也使我遍历了整个数组。 我需要一行代码(有条件)来压平候选人。 事先知道存在0或1个令人满意的对象,这两个操作都是浪费的。

我想要的是这样的:

array.find_first(block) 它返回nil或该块对其求值为真的第一个对象,从而在该对象处结束遍历。

我必须自己写这个吗?Array中所有其他出色的方法都使我觉得它在那里,而我只是没有看到它。 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-07 01:26:01 410 0
1 条回答
写回答
取消 提交回答
  • detect如果要返回第一个值,而块返回true,则使用数组方法

    [1,2,3,11,34].detect(&:even?) #=> 2

    OR

    [1,2,3,11,34].detect{|i| i.even?} #=> 2 如果要返回所有值,其中block返回true,则使用 select

    [1,2,3,11,34].select(&:even?) #=> [2, 34]

    2020-02-07 01:26:14
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Data Pre-Processing in Python: 立即下载
Java8简明教...[fredwong].1494561200.pdf 立即下载
低代码开发师(初级)实战教程 立即下载