2016-04-03 55 views
1

我有地圖的與相同密鑰的矢量:更新值

(def items [{:id 1 :name "first item"} 
      {:id 2 :name "second item"}]) 

我可以在矢量大寫在第一地圖的:name鍵的值:

(update-in items [0 :name] clojure.string/upper-case) 
=> [{:id 1, :name "FIRST ITEM"} {:id 2, :name "second item"}] 

如何在每個地圖中每個:name鍵大寫?我希望這樣的:

[{:id 1, :name "FIRST ITEM"} {:id 2, :name "SECOND ITEM"}] 
+0

類似的有用問題http://stackoverflow.com/q/22359975和http://stackoverflow.com/q/1676891。 – glts

回答

1

這應做到:

(map #(update-in % [:name] clojure.string/upper-case) items) 

%符號表示爲在函數式items每個地圖。

+4

如果您使用的是Clojure 1.7,您可以使用['update'](http://clojuredocs.org/clojure.core/update)而不是'update-in'。 –