A = [[1, :a], [2, :b], [3, :c], [1, :d]]
B = [[1, :e], [2, :f]]
Bh = B.to_h
C = A.map { |(k, *vs)|
v = Bh[k]
[k] + if v then vs + [v] else vs end
}
p :A => A
p :B => B
p :C => C
QSA9IFtbMSwgOmFdLCBbMiwgOmJdLCBbMywgOmNdLCBbMSwgOmRdXQpCID0gW1sxLCA6ZV0sIFsyLCA6Zl1dCgoKQmggPSBCLnRvX2gKCkMgPSBBLm1hcCB7IHwoaywgKnZzKXwKCXYgPSBCaFtrXQoJCglba10gKyBpZiB2IHRoZW4gdnMgKyBbdl0gZWxzZSB2cyBlbmQKfQoKCnAgOkEgPT4gQQpwIDpCID0+IEIKcCA6QyA9PiBD
{:A=>[[1, :a], [2, :b], [3, :c], [1, :d]]}
{:B=>[[1, :e], [2, :f]]}
{:C=>[[1, :a, :e], [2, :b, :f], [3, :c], [1, :d, :e]]}