/ / रूबी: दो आयामी सरणियों को एक ही सरणी के हैश [बंद] में मिलाएं - रूबी, सरण, हैश

रूबी: दो-आयामी सरणी को एक ही सरणी में बंद करें [बंद] - रूबी, सरणी, हैश

इन दो सरणियों को चालू करने का सबसे साफ तरीका क्या है:

[[1, "a"], [2, "b"]]

तथा

[[1, "c"], [2, "d"]]

इस तरह की मनमानी कुंजी के साथ हैश के एक ही सरणी में:

[{:id => 1, :foo => "a", :bar => "c"}, {:id => 2, :foo => "b", :bar => "d"}]

विस्तृत करने के लिए, प्रत्येक आंतरिक सरणी की स्थिति 0नक्शा करना चाहिए: आईडी कुंजी, पहले सरणी के आंतरिक सरणियों की स्थिति 1 को मैप करना चाहिए: फू कुंजी, और दूसरे सरणी के आंतरिक सरणियों की स्थिति 1 को मैप करना चाहिए: बार कुंजी। इसके अलावा, प्रत्येक हैश की आईडी कुंजी को दोहराना नहीं चाहिए, और प्रत्येक हैश में एक: आईडी,: फू, और: बार कुंजी होनी चाहिए।

उत्तर:

उत्तर № 1 के लिए 1

ब्लॉक चर को विघटित करके स्पष्ट करें:

a = [[1, "a"], [2, "b"]]
b = [[1, "c"], [2, "d"]]

a.zip(b).map { |(id,foo),(_,bar)| {id: id, foo: foo, bar: bar } }
#=> [{:id=>1, :foo=>"a", :bar=>"c"}, {:id=>2, :foo=>"b", :bar=>"d"}]