2017-08-25 183 views
1

我有一個簡單的問題,關於如何從數組中提取基於它們的屬性的元素。基於元素的屬性獲取數組中的元素

我有對象的數組:

obj_array = [obj1,obj2,obj3........] 

每個物體有一個稱爲「類型」,它返回一個對象的屬性。所以,

object1.type = type1 
object2.type = type3 
object3.type = type8 
object4.type = type1 
... 

我想找到和obj_array由「TYPE1」類型提取對象的列表,並將它們存儲在數組中。結果數組應該是這樣的:

type1_array = [object1,object4]

下面是一個使用循環我的解決方案:

type1_array = [] 
obj_array.each do |e| 
    if e.type == type1 
     type1_array << e 
    end 
end 

有很短的辦法做到這一點在Ruby中,而無需通過在每一個元素具有循環數組?

回答

2

Ruby's selected method可能是你在找什麼。

obj_array.select { |obj| obj.type == type1 } 

顯然確保你定義type1

+0

是的,type1是一個預定義的對象。謝謝!! – danynl

+0

這不行。第一次執行塊時,即在數組的第一個元素處,代碼將從封閉方法中「返回」。 –

+0

@JörgWMittag謝謝你的發現。最近我一直在做太多的JavaScript :) – larz