clojure:为地图矢量添加索引

mik*_*kom 3 vector clojure

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

例:

(append-index [{:name "foo"} {:name "bar"} {:name "baz"}])
Run Code Online (Sandbox Code Playgroud)

应该回来

[{:name "foo" :index 1} {:name "bar" :index 2} {:name "baz" :index 3}]
Run Code Online (Sandbox Code Playgroud)

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

Leo*_*tny 7

首先,Clojure开始计算0中的向量元素,所以你可能想要得到

[{:index 0, :name "foo"} {:index 1, :name "bar"} {:index 2, :name "baz"}]
Run Code Online (Sandbox Code Playgroud)

你可以通过功能很容易地做到这一点map-indexed

(defn append-index [coll]
  (map-indexed #(assoc %2 :index %1) coll))
Run Code Online (Sandbox Code Playgroud)