假设我有以下地图矢量:
[{:name "Jack" :age 5}
{:name "Joe" :age 15}
{:name "Mare" :age 34}
{:name "William" :age 64}
{:name "Adolf" :age 34}]
我想将其转换为索引地图,例如:
{1 {:name "Jack" :age 5}
2 {:name "Joe" :age 15}
3 {:name "Mare" :age 34}
4 {:name "William" :age 64}
5 {:name "Adolf" :age 34}}
在某些时候,当我修改了索引地图时,我想将其转换回地图矢量。
怎么做?
答案 0 :(得分:5)
您可以使用map-indexed
将每个地图与其索引相关联,然后将其缩减为hashmap:
(reduce into {} (map-indexed #(assoc {} %1 %2) test))
如果你想回到你的第一个结构:
(vec (vals your-indexed-map))
答案 1 :(得分:2)
(zipmap (iterate inc 1) data-vector)
结合了一系列键和值,因此您可以这样做:
data-vector
((->> data-map
(sort-by key)
(map val))
是你的地图矢量)
反过来基本上是按键排序,然后取所有值,这些值可以写成:
{{1}}