如何检查数组的所有元素是否满足条件?

3

我正在使用 Ruby 2.4 版本,如何检查我的数组中的所有元素是否满足某个条件? 我有以下代码:

cond = true
arr.each do |e|
  if e.nil? || e.to_i < 5
    cond = false
    break
   end
end

但我觉得有更有效率的方法来完成这个任务。

2个回答

7
你可以将其重写为:

你可以把它改写成

arr.all? { |e| e.to_i >= 5 }

1
是的,很棒 :) - Ursus
1
问题是,“如何检查数组的所有元素是否满足条件?”您的答案是针对OP给出的特定示例的解决方案,而不是通用解决方案,因此其实用性有限。例如,假设您只知道arr是任何对象obj的数组,其中可能包括nil,并且您以方法m的形式获得了一个条件,该方法以obj作为参数并返回truefalse。那么您可以编写arr.all? { |obj| !obj.nil? && m(obj) }。这个评论也适用于其他答案。 - Cary Swoveland

0
如何检查数组的所有元素是否满足一个条件呢?
使用 all? 方法。例如:
[1, 2, 3].all? { |i| i < 4 } #=> true

看起来 i 可能是 nil。 - Eric Duminil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接