在没有特定值的数组中查找第一个值

时间:2011-11-01 23:44:04

标签: ruby

我怀疑的简单问题,但仍然是:

我正在寻找一种从没有特定值的数组中获取第一个元素的有效方法。例如,给定

["Fred", "Fred", "Fred", "James", "Alex", "Fred"]

我想回“詹姆斯”

我可以通过

之类的东西来做到这一点
thearray.select { |i| i != "Fred" }.first

但是这会在返回值之前迭代每个元素(包括alex和最后一个fred)。

所以 - 我希望有一种简单的方法来做到这一点,它不会遍历整个数组 - 直到它找到一个值。任何想法都值得赞赏。

1 个答案:

答案 0 :(得分:10)

使用detectfind

array.detect { |value| value != "Fred" }

根据文档,它返回第一个匹配值。

  

将枚举中的每个条目传递给阻止。返回第一个块不为false的块。如果没有对象匹配,则调用ifnone并在指定时返回其结果,否则返回nil。   如果没有给出块,则返回枚举器。