【问题标题】:clojure: add index to vector of mapsclojure:为地图向量添加索引
【发布时间】:2015-12-28 09:32:58
【问题描述】:

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

例子:

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

应该返回

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

实现追加索引功能的最佳方式是什么?

【问题讨论】:

  • 向我们展示您迄今为止的尝试。
  • 我只想将向量中的位置作为索引。我想我实际上找到了一个可以做我想做的事情,所以我自己回答这个问题并关闭它。
  • 旁注:如果您考虑一下,在地图上添加索引并没有多大意义。您可以在获取它时添加它。懒惰的朋友。
  • 这是一个更大的事情的一部分,它涉及通过外部库从数据库中获取递归结构,然后对其进行排序(在 html/javascript 端)。

标签: vector clojure


【解决方案1】:

首先,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))

【讨论】:

    【解决方案2】:

    只是增加一些乐趣:

    (defn append-index [items]
      (map assoc items (repeat :index) (range)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多