clojure:为地图矢量添加索引

时间:2015-12-28 09:32:59

标签: vector clojure

我有一张地图矢量。我想为每个元素关联一个索引元素。

示例:

(append-index [{:name "foo"} {:name "bar"} {:name "baz"}])

应该返回

[{:name "foo" :index 1} {:name "bar" :index 2} {:name "baz" :index 3}]

实现append-index函数的最佳方法是什么?

2 个答案:

答案 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)))