我有一个地图列表,我希望在给定某个"columnId"的情况下检索"field"的值.
(def field-to-column-mapping
[{"field" "first_name", "columnId" "1"}
{"field" "last_name", "columnId" "2"}
{"field" "phone", "columnId" "3"}])
(defn get-field-given-column [id]
((some #(if (= id (get % "columnId")) %)
field-to-column-mapping)
"field"))
;; Gets "first_name"
(get-field-given-column "1")
Run Code Online (Sandbox Code Playgroud)
这有效,但我的直觉告诉我必须有一个更清洁的方法来做到这一点.
有没有更好的方法呢?
使用a编写for它可能会使得它可能更清晰,同时与您的问题中的示例基本相同:
(defn get-field-given-column [id]
(for [row field-to-column-mapping :when (= (row "columnId") id)]
(row "field")))
> (get-field-given-column "1")
("first_name")
Run Code Online (Sandbox Code Playgroud)
这将返回一系列答案,因为多个行可能具有相同的键.如果确实只有一个,那么添加一个电话first.
| 归档时间: |
|
| 查看次数: |
3300 次 |
| 最近记录: |