私は2つの配列を持っています:
a = [[1234,1],[2134,0],[4321,0],[2221,3]]
b = [[2134,1],[4321,3]]
次の結果の最初の要素に基づいてそれらをマージしたいa
:
c = [[1234,1],[2134,1],[4321,3],[2221,3]]
最初の要素が一致する場合、 0 を ina
の値に置き換えたいと思います。b
最初の要素は a と b で一意です。
どうすればいいですか?
前もって感謝します、
与えられた
a = [[1234,1],[2134,0],[4321,0],[2221,3]]
と
b = [[2134,1],[4321,3]]
これらの配列をハッシュに変換し、マージを実行してから、結果を再び配列に変換できます。
Hash[a].merge(Hash[b]).to_a
#=> [[1234, 1], [2134, 1], [4321, 3], [2221, 3]]
1 つの可能性を次に示します。
a = [[1234,1],[2134,0],[4321,0],[2221,3]]
b = [[2134,1],[4321,3]]
a.zip(b).flatten(1).uniq(&:first)
# => [[1234, 1], [2134, 1], [4321, 3], [2221, 3]]
[*a, *b].group_by(&:first).map{|k, v| [k, v.map(&:last).inject(:+)]}