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})
Run Code Online (Sandbox Code Playgroud)
您可以使用以下内容:
(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)
Run Code Online (Sandbox Code Playgroud)