-2

私は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 で一意です。

どうすればいいですか?

前もって感謝します、

4

5 に答える 5

1

与えられた

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]]
于 2013-06-26T15:09:17.763 に答える
1

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]]
于 2013-06-26T15:10:07.667 に答える
0
[*a, *b].group_by(&:first).map{|k, v| [k, v.map(&:last).inject(:+)]}
于 2013-06-26T15:40:54.340 に答える