2012-06-23 12 views
11

मुझे ऐसा करने के बारे में बात करने वाले कहीं भी नहीं मिल रहा है।मूल्यों की सरणी के साथ अन्य हैश में मूल्यों की सरणी के साथ रूबी हैश विलय

मैं एक हैश {"23"=>[0,3]} है कहो और मैं इस हैश {"23"=>[2,3]} में विलय करने के लिए प्राप्त करने के लिए {"23"=>[0,3]}

धन्यवाद इस हैश {"23"=>[0,2,3]}

या कैसे {"23"=>[3]} के बारे में {"23"=>0} के साथ विलय के साथ परिणाम चाहते हैं!

+0

ठीक है, * आपने क्या प्रयास किया है *? वैसे भी, 'इंजेक्शन' देखा? एक और चालाक ज़िप-दर-कुंजी दृष्टिकोण हो सकता है, हालांकि ... –

+0

@pst: या, बेहतर, 'कम करें'? :) –

+0

@SergioTulentsev या कुछ :-) –

उत्तर

23
{"23"=>[0,3]}.merge({"23"=>[2,3]}){ |key,oldval,newval| oldval | newval } 
#=> {"23"=>[0, 3, 2]} 

अधिक सामान्य गैर सरणी मानों का प्रबंधन कैसे रास्ता:

{"23"=>[0,3]}.merge({"23"=>[2,3]}) do |key, oldval, newval| 
    (newval.is_a?(Array) ? (oldval + newval) : (oldval << newval)).uniq 
end 

एक मार्क-आंद्रे Lafortune के संकेत के साथ अपडेट किया।

+2

नहीं पता था कि विलय एक ब्लॉक ले सकता है। मिठाई! –

+0

यह कमाल है। अच्छी तरह से काम! मेगास के लिए +1! धन्यवाद! – bfcoder

+4

'पुराना, उपयोग करने के लिए बेहतर, छोटा, तेज newval' तो '(पुराना + newval) .uniq' –

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