vie*_*bel 1 dictionary clojure filter
让我们m成为一个嵌套的地图.如何查找m具有某个键的所有地图.
例如:
(def m {:a {:id 5}
        :d {:id 58}
        :x {:id 4 :c {:id 3 :d 4}}})
(recursive-filter m :id)
;; expected result: 
> ({:id 5} {:id 58} {:id 4 :c {:id 3 :d 4}} {:id 3})
您可以使用以下内容:
(def data {:a {:id 5}
           :d {:id 58}
           :x {:id 4 :c {:id 3 :d 4}}})
(defn recursive-filter [m f]
  (filter #(and (map? %) (f %))
          (tree-seq map? vals m)))
(recursive-filter data :id)