例如
list_1 = [{k: 1, v: "a"}, {k: 2, v: "b"}, {k:3, v:"c"}]
list_2 = [{k: 1, v: "x"}, {k: 4, v: "d"}]
merge(list_1, list_2, :k)
# => [{k: 1, v: "x"}, {k: 2, v: "b"}, {k:3, v:"c"}, {k:4, v: "d"}]
其中的每个 hash 都以 hash[:k] 的值作为 key 来匹配
我现在的做法是
def merge(list_1, list_2, key)
parse_to_hash = ->(list) { Hash[list.map { |o| [o[key], o] }] }
list_1_hash = parse_to_hash.(list_1)
list_2_hash = parse_to_hash.(list_2)
list_1_hash.merge(list_2_hash).values
end
如何实现这个 merge 更好?