2014-01-16 26 views
0

我有地圖的結構是這樣的...添加到關鍵詞的函數值

{"[email protected]"{:email "[email protected]", :password "pass"}, 
    "[email protected]"{:email "[email protected]", :password "pass2"}, 
    "[email protected]"{:email "[email protected]", :password "pass3"}, 
    "[email protected]"{:email "[email protected]", :password "pass4"}} 

我如何能在指的函數添加到所有的值:password關鍵字我的函數只接受一個參數串......這是我試過,但它周圍不能有...

(更新中MyMap中[:密碼](myfunction的「在這裏被假設是從價值觀:密碼關鍵字」))

回答

1

您應該分別更新每一行並累積,因此在列表中迭代reduce,然後對於每個元素鍵和assoc產生的結果行。

(reduce (fn[result row] 
      (assoc result 
       (first row) ;;email 
       (update-in (second row) 
          [:password] 
          (fn[pass] ..do something..)))) 
     {} 
     mymap) 
+0

完蛋了!謝謝。 – Shile

1
(reduce-kv (fn [result k cfg-map] 
      (assoc result 
       k (update-in cfg-map [:password] your-fn))) 
      {} your-ds) 

(into {} (mapv #(update-in % [1 :password] your-fn) your-ds))