2016-04-03 29 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'。 –