我怀疑的简单问题,但仍然是:
我正在寻找一种从没有特定值的数组中获取第一个元素的有效方法。例如,给定
["Fred", "Fred", "Fred", "James", "Alex", "Fred"]
我想回“詹姆斯”
我可以通过
之类的东西来做到这一点thearray.select { |i| i != "Fred" }.first
但是这会在返回值之前迭代每个元素(包括alex和最后一个fred)。
所以 - 我希望有一种简单的方法来做到这一点,它不会遍历整个数组 - 直到它找到一个值。任何想法都值得赞赏。
答案 0 :(得分:10)
使用detect
或find
。
array.detect { |value| value != "Fred" }
根据文档,它返回第一个匹配值。
将枚举中的每个条目传递给阻止。返回第一个块不为false的块。如果没有对象匹配,则调用ifnone并在指定时返回其结果,否则返回nil。 如果没有给出块,则返回枚举器。