迭代 Clojure 向量并构建集合向量
Iterate over Clojure vector and build up a vector of sets
我正在建立一个数据交易。我有
(def codes
[:first-code :second-code :third-code])
我需要生成这种格式的集合向量:
[
{:db/id (d/tempid :db.part/region)
:db/ident :first-code}
{:db/id (d/tempid :db.part/region)
:db/ident :second-code}
{:db/id (d/tempid :db.part/region)
:db/ident :third-code}
]
我不知道如何按惯用方式执行此操作。
我想你的意思是 "a vector of maps"。下面的代码应该不错:
(mapv
(fn [code]
{:db/id '(d/tempid :db.part/region)
:db/ident code})
codes)
您可能想要使用for
理解:
(let [id '(d/tempid :db.part/region)]
(vec
(for [code codes]
{:db/id id
:db/ident code})))
或map
(mapv
如果你特别想要一个矢量):
(let [id '(d/tempid :db.part/region)]
(->> codes
(mapv (fn [code]
{:db/id id
:db/ident code}))))
我很确定有更简单的方法,但这将是一个好的开始:
(vec
(map #(into {} {:db/id '(d/tempid :db.part/region) :db/ident %}) codes))
我正在建立一个数据交易。我有
(def codes
[:first-code :second-code :third-code])
我需要生成这种格式的集合向量:
[
{:db/id (d/tempid :db.part/region)
:db/ident :first-code}
{:db/id (d/tempid :db.part/region)
:db/ident :second-code}
{:db/id (d/tempid :db.part/region)
:db/ident :third-code}
]
我不知道如何按惯用方式执行此操作。
我想你的意思是 "a vector of maps"。下面的代码应该不错:
(mapv
(fn [code]
{:db/id '(d/tempid :db.part/region)
:db/ident code})
codes)
您可能想要使用for
理解:
(let [id '(d/tempid :db.part/region)]
(vec
(for [code codes]
{:db/id id
:db/ident code})))
或map
(mapv
如果你特别想要一个矢量):
(let [id '(d/tempid :db.part/region)]
(->> codes
(mapv (fn [code]
{:db/id id
:db/ident code}))))
我很确定有更简单的方法,但这将是一个好的开始:
(vec
(map #(into {} {:db/id '(d/tempid :db.part/region) :db/ident %}) codes))