2011-01-22 10 views
7

मेरे पास एक सरणी या अलग-अलग वस्तुएं हैं और मैं ऑब्जेक्ट्स द्वारा समूह करना चाहता हूं। उदाहरणरूबी group_by ऑब्जेक्ट?

=> [#<Graphic id: 3...">, #<Collection id: 1....">, #<Category id:...">, #<Volume id: 15...">] 
all.size 
=> 4 

के लिए मैं

all.group_by(Object) 

कोशिश की, लेकिन बात नहीं बनी ... कैसे एक सरणी में वस्तुओं GroupBy करने पर कोई विचार?

+0

आपका ऑब्जेक्ट क्या है? – shingara

+0

यह मेरे प्रश्न में है ... मेरे पास 4 (ग्राफिक, संग्रह, श्रेणी, वॉल्यूम) – Trace

+0

आप किस संपत्ति को समूहबद्ध करने का प्रयास कर रहे हैं? – Jimmy

उत्तर

17

क्या आप ऐसा कुछ करना चाहते हैं?

all.group_by(&:class) 

कौन होगा उनके वर्ग के नाम

टिप्पणी के लिए संपादित करें द्वारा समूह सरणी में वस्तुओं

all.group_by(&:class).each do |key, group| 
    group.each{|item| puts item} 
end 

कुंजी समूह तत्व है और obj कुंजी के लिए संग्रह है, इसलिए इस होगा पाश समूह में प्रत्येक समूह के माध्यम से और उस समूह के भीतर वस्तुओं को सूचीबद्ध करें

इसके अलावा आप समूह के भीतर आसानी से आसानी से सॉर्ट कर सकते हैं

all.group_by(&:class).each do |key, group| 
    group.sort_by(&:attribute).each{|item| puts item} 
end 
+0

हां लेकिन यह मुझे एक आदेश दिया गया हैश ... मैं इसे देखने में कैसे उपयोग करूं। मैं सभी संग्रहों को पहले सभी ग्राफिक्स और इतने पर प्रदर्शित करना चाहता हूं .... इसलिए मूल रूप से मैं मॉडल के माध्यम से समूह के लिए इस सरणी का उपयोग करना चाहता हूं और फिर उनके माध्यम से लूप करना चाहता हूं लेकिन आप इसके माध्यम से कैसे लूप करते हैं .... = > # Trace

+0

मैंने आपके इरादे को दर्शाने के लिए अपना उत्तर अपडेट किया, मुझे लगता है कि – Jimmy

+0

धन्यवाद जिमी यह एक अच्छा जवाब है ... क्या आप जानते हैं कि उन्हें उपयुक्त वस्तुओं के साथ 4 सरणी में कैसे समूहित करना है ... उदाहरण के लिए @ ग्राफिक्स के साथ एक सरणी और अगला @collections के साथ और इसी तरह ... – Trace

संबंधित मुद्दे