2011-03-19 85 views
15

以下代碼有效,但您能否告訴我這是否是正確的方式?查找對象數組是否包含具有特定值的屬性

我有定位對象的數組,我要檢查它是否包含哪個屬性「隱藏」有對象「假」值:

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

如果你喜歡,另一種簡化方法是:'如果positions.map(&隱藏).include?(false)'。 (警告:如果'hidden'屬性返回nil,則這和原始方法的行爲將與下面給出的答案不同。) – antinome 2013-03-20 16:04:00

回答

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

使用any?方法

2

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

0

您還可以使用all?方法:

<% unless positions.all? {|position| position.hidden} %> 
... 
<% end %> 
相關問題