【问题标题】:clojure: search in vector of mapsclojure:在地图向量中搜索
【发布时间】:2019-07-25 16:09:38
【问题描述】:

我想通过名字和姓氏来获取 clojure 中的年龄。最好的方法是什么?

(def data
  [{:id 1 :first-name "John1" :last-name "Dow1" :age 14}
   {:id 2 :first-name "John2" :last-name "Dow2" :age 54}
   {:id 3 :first-name "John3" :last-name "Dow3" :age 34}])

【问题讨论】:

  • 你试过什么?您具体需要哪些帮助?请注意,地图矢量并不是存储该信息的理想方式。地图的地图将使查找变得更加容易。

标签: clojure


【解决方案1】:
(def data
  [{:id 1 :first-name "John1" :last-name "Dow1" :age 14}
   {:id 2 :first-name "John2" :last-name "Dow2" :age 54}
   {:id 3 :first-name "John3" :last-name "Dow3" :age 34}])


(defn find-user [first-name last-name data]
  (first (filter (fn [item]
                   (and (= (:first-name item) first-name)
                        (= (:last-name item) last-name)))
                 data)))

(:age (find-user "John3" "Dow3" data)) ;; => 34

【讨论】:

  • 这只会让你获得第一个,我建议放弃first
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多