从地图中获取两个不同的关键字

isa*_*nca 2 clojure

我刚开始学习Clojure,我想从地图矢量中获取两个关键字.

让我们说有一个向量

(def a [{:id 1, :description "bla", :amount 12, :type "A", :other "x"} {:id 2, :description "blabla", :amount 10, :type "B", :other "y"}])
Run Code Online (Sandbox Code Playgroud)

而且我想得到一个新的载体

[{"bla" 12} {"blabla" 10}]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点??谢谢!

Mag*_*gos 6

假设你想要:description:amount单独的,而不是映射一个到另一个的地图,你可以用来juxt同时检索两个:

(mapv (juxt :description :amount) a)
;; => [["bla" 12] ["blabla" 10]]
Run Code Online (Sandbox Code Playgroud)

如果你真的想制作地图,你可以使用例如applyhash-map做到这一点:

(mapv #(apply hash-map ((juxt :description :amount) %)) a)
;; => [{"bla" 12} {"blabla" 10}]
Run Code Online (Sandbox Code Playgroud)