2012-01-26 13 views
20

मैं रेल का उपयोग कर रहा हूं और मेरे पास हैश ऑब्जेक्ट है। मैं एक विशिष्ट मूल्य के लिए हैश खोजना चाहता हूं। मैं उस मूल्य से जुड़ी कुंजी नहीं जानता।कैसे जांचें कि हैश में विशिष्ट मान मौजूद है या नहीं?

मैं कैसे जांचूं कि हैश में कोई विशिष्ट मान मौजूद है या नहीं? साथ ही, मैं उस विशिष्ट मान से जुड़ी कुंजी कैसे पा सकता हूं?

उत्तर

42

हैश में Enumerable शामिल है, तो आप हैश को पार करने के लिए उस मॉड्यूल पर कई विधियों का उपयोग कर सकते हैं।

hash.has_value?(value_you_seek) 

उस मान से संबद्ध कुंजी खोजने के लिए::

hash.key(value_you_seek) 

यह API documentation for Ruby (1.9.2) उपयोगी होना चाहिए यह भी इस आसान विधि है।

+0

उपयोग कर सकते हैं यह नेस्टेड हैश – nathanengineer

1

कक्षा Hash में select विधि है जो प्रविष्टियों का एक नया हैश वापस करेगा जिसके लिए ब्लॉक सत्य है;

h = { "a" => 100, "b" => 200, "c" => 300 } 
h.select {|k,v| v == 200} #=> {"b" => 200} 

इस तरह आप मूल्य से खोज करेंगे, और अपनी कुंजी प्राप्त करेंगे!

+0

क्यों जब हैश तरीकों में बनाया गया है है पार नहीं करता है? – max

-2

इससे भी छोटा संस्करण hash.values

0

Hash#has_key? जबकि काम करता होगा, लेकिन, के रूप में Matz here लिखा था, यह Hash#key? के पक्ष में पदावनत किया गया है।

Hash की key? विधि आपको बताती है कि दी गई कुंजी मौजूद है या नहीं।

hash.key?(:some_key) 
0

आप hash.values करते हैं, तो आप अब एक सरणी है।

सरणियों पर आप Enumerable खोज विधि include?

hash.values.include?(value_you_seek) 
संबंधित मुद्दे