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

Pla*_*Ton 3 ruby

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

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

["Fred", "Fred", "Fred", "James", "Alex", "Fred"]
Run Code Online (Sandbox Code Playgroud)

我想回归"詹姆斯"

我可以通过类似的方式做到这一点

thearray.select { |i| i != "Fred" }.first
Run Code Online (Sandbox Code Playgroud)

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

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

Anu*_*rag 10

使用detectfind.

array.detect { |value| value != "Fred" }
Run Code Online (Sandbox Code Playgroud)

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

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