我有两个 map 数组
第一个是[{:a 1 :b 2 :d 6} {:a 2 :b 2} {:a 7 :b 7}]
第二个是[{:a 3 :c 3 :e 9 :y 7} {:a 2 :b 6 :c 8}]
取决于a
的值,即如果它在第二个数组中匹配,则“第二个 map ”应与“第一个 map ”合并,并且生成的 map 数组应为
Res 应该是 [{:a 1 :b 2 :d 6} {:a 2 :b 6 :c 8} {:a 7 :b 7} {:a 3 :c 3 :e 9 :y 7}]
任何人都可以帮我解决这个问题吗?提前致谢。
最佳答案
给你:
user> (def xs [{:a 1 :b 2 :d 6} {:a 2 :b 2} {:a 7 :b 7}])
#'user/xs
user> (def ys [{:a 3 :c 3 :e 9 :y 7} {:a 2 :b 6 :c 8}])
#'user/ys
user> (for [[a ms] (group-by :a (concat xs ys))] (apply merge ms))
({:a 1, :b 2, :d 6} {:a 2, :c 8, :b 6} {:a 7, :b 7} {:y 7, :a 3, :c 3, :e 9})
关于Clojure,合并两个 map 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10209218/