按字符串过滤映射键值并返回匹配 - Clojure

问题描述 投票:0回答:1

如何按字符串过滤映射并将匹配项(我需要同时过滤键和值。)键值对作为字符串返回。我知道这看起来像一个奇怪的问题,它只是关于学习 Clojure 的。

在一切之前,感谢您抽出宝贵的时间。

;my input map ===>

{1 {:id 1c :race "human" :gender "male"}
 2 {:id 1a :race "cat" :gender "cfemale"}}
;my filter string
"c"
;my expected output for "c" ===>

[["id" "1c"] ["race" "human"] ["race" "cat"]["gender" "cfemale"]]

;my filter string
"r"
;my expected output for "r" ===>

[["race" "human"] ["race" "cat"]["gender" "cfemale"]["gender" "male"]]

filter collections clojure
1个回答
0
投票
(def my-vec (into [] (for [m (vals my-map) [k v] m] [(name k) v])))


(defn filter-vector-func [coll ?s]
(reduce
  (fn [x y]
    (let [[first second :as all] y]
      (if (str/includes? (str/lower-case all) (str/lower-case ?s))
        (conj x all)
        x)))
  []
  coll))

这是我想要的。可以用postwalk写吗?

© www.soinside.com 2019 - 2024. All rights reserved.