我有一张地图矢量。我想为每个元素关联一个索引元素。
示例:
(append-index [{:name "foo"} {:name "bar"} {:name "baz"}])
应该返回
[{:name "foo" :index 1} {:name "bar" :index 2} {:name "baz" :index 3}]
实现append-index函数的最佳方法是什么?
答案 0 :(得分:6)
首先,Clojure开始从0开始计算向量元素,所以你可能想得到
[{:index 0, :name "foo"} {:index 1, :name "bar"} {:index 2, :name "baz"}]
您可以使用map-indexed
function
(defn append-index [coll]
(map-indexed #(assoc %2 :index %1) coll))
答案 1 :(得分:1)
只是添加一些乐趣:
(defn append-index [items]
(map assoc items (repeat :index) (range)))