Clojure:添加到地图

时间:2014-10-21 22:10:48

标签: vector map clojure

如果我有地图矢量

(def v [{:key1 "value 1" :key2 "value2"} {:key1 "value 3" :key2 "value4"}])

和地图

(def m {:key3 "value2" :key4 "value5"})

如何将map m添加到向量v中的所有映射,其中2个给定键的值(在本例中为key2和key3)相等?

预期结果如下:

[{:key1 "value 1" :key2 "value2" :key3 "value2" :key4 "value5"} {:key1 "value 3" :key2 "value4"}]

1 个答案:

答案 0 :(得分:3)

如果key2和k3相等,您希望将每个地图与m3合并:

(map (fn [x] (if (= (:key2 x) (:key3 m)) (merge m x) x)) v)

=>

({:key3 "value2", :key2 "value2", :key4 "value5", :key1 "value 1"} {:key2 "value4", :key1 "value 3"})