私はこれを行うことに関してどこでも見つけることができません。値の配列で値の配列を持つ別のハッシュにルビのハッシュをマージする
は、私は、ハッシュ{"23"=>[0,3]}
を持っていると私は、このハッシュ{"23"=>[0,2,3]}
またはどの程度{"23"=>[3]}
が{"23"=>[0,3]}
感謝を取得するために{"23"=>0}
と合併して生じるように、このハッシュ{"23"=>[2,3]}
にマージしたいと言います!非配列の値を処理するため
私はこれを行うことに関してどこでも見つけることができません。値の配列で値の配列を持つ別のハッシュにルビのハッシュをマージする
は、私は、ハッシュ{"23"=>[0,3]}
を持っていると私は、このハッシュ{"23"=>[0,2,3]}
またはどの程度{"23"=>[3]}
が{"23"=>[0,3]}
感謝を取得するために{"23"=>0}
と合併して生じるように、このハッシュ{"23"=>[2,3]}
にマージしたいと言います!非配列の値を処理するため
{"23"=>[0,3]}.merge({"23"=>[2,3]}){ |key,oldval,newval| oldval | newval }
#=> {"23"=>[0, 3, 2]}
より汎用的な方法:マルク=アンドレ・Lafortuneのヒントを使用して更新
{"23"=>[0,3]}.merge({"23"=>[2,3]}) do |key, oldval, newval|
(newval.is_a?(Array) ? (oldval + newval) : (oldval << newval)).uniq
end
。
マージがブロックを取る可能性があるのを知らなかった。甘い! –
それは素晴らしいです。完璧に動作します!メガに+1!ありがとう! – bfcoder
もっと使いやすく、短く、使いやすい 'oldval | newval'それから '(oldval + newval).uniq' –
さて、あなたは何を試しましたか?とにかく、 '注射'を見た?しかし、より賢いzip-by-keyアプローチがあるかもしれません... –
@pst:あるいは、より良い、 'reduce'? :) –
@SergioTulentsevまたは何か:-) –