查找对象数组是否包含具有特定值的属性

问题描述:

以下代码有效,但您能否告诉我这是否是正确的方式?查找对象数组是否包含具有特定值的属性

我有定位对象的数组,我要检查它是否包含哪个属性“隐藏”有对象“假”值:

<% if positions.collect{|position| position.hidden}.include?(false) %> 
    ... 
<% end %> 
+2

如果你喜欢,另一种简化方法是:'如果positions.map(&隐藏).include?(false)'。 (警告:如果'hidden'属性返回nil,则这和原始方法的行为将与下面给出的答案不同。) – antinome 2013-03-20 16:04:00

<% if positions.any?{|position| !position.hidden} %> 
    ... 
<% end %> 

使用any?方法

if positions.any? {|position| not position.hidden}

您还可以使用all?方法:

<% unless positions.all? {|position| position.hidden} %> 
... 
<% end %>