2010-08-05 20 views
18

अंदर से एक हैश का चयन मैं निम्नलिखित सरणी:रूबी: एक सरणी

response = [{"label"=>"cat", "name"=>"kitty", "id"=>189955}, {"label" => "dog", "name"=>"rex", "id" => 550081}] 

मैं हैश कि लेबल बिल्ली शामिल कैसे चुनें? मुझे पता है response.first मुझे एक ही परिणाम देगा, लेकिन मैं लेबल द्वारा खोजना चाहता हूं।

धन्यवाद!

देब

उत्तर

37
response.find {|x| x['label'] == 'cat' } #=> {"label"=>"cat", "name"=>"kitty", "id"=>189955} 
+0

अधिक से अधिक मैं खोज रहा हूँ कि रूबी बस सचमुच कमाल है (कई कारणों से, जिनमें से कम से कम इन छोटे सुविधा तरीकों से किया जा रहा)। –

10

प्रयास करें:

response.select { |x| x["label"] == "cat" } 
+0

भी काम करता है, लेकिन यह एक सरणी देता है, इसलिए मैं इस विशेष मामले में "ढूंढें" के साथ जा रहा हूं। धन्यवाद! :) – deb

+5

हां, 'ऐरे # ढूंढ' पहला मैच या शून्य देता है, जबकि 'ऐरे # चयन' और 'ऐरे # find_all' सभी मिलान करने वाले तत्वों की एक सरणी लौटाता है। – Zargony

+1

और यह भी ध्यान देने योग्य है कि 'ऐरे # ढूंढ' के लिए समानार्थी 'ऐरे # पता' है। – PreciousBodilyFluids

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