过滤地图条目中多个键的值,并返回包含这些条目的地图Clojure

时间:2018-06-01 19:34:17

标签: filter clojure clojurescript

我是clojure的新手,需要一些帮助。

在clojurescript中,我使用地图(存储在原子中)建立一个html表,例如

[{:id 2, :category "Big bang theory", :name "The Big Bang!"} 
{:id 3, :category "The big Lebowski", :name "Ethan Coen"}
{:id 4, :category "Chitty Chitty Bang Bang", :name "Roald Dahl"}]

我想创建一个搜索单词的搜索(例如" ban")zh_cn返回一个地图,其中包含在其某个键值中包含该单词(或其中一部分)的条目。

如果"禁止"它应该返回

[{:id 2, :category "Big bang theory", :name "The Big Bang!"} 
{:id 4, :category "Chitty Chitty Bang Bang", :name "Roald Dahl"}]

根据上面的地图,该表只更新了这两个条目。

我找到了一些有趣的解决方案,但它们都集中在一个键(即:category或:name)上,而不是地图条目中的所有键。

我认为this试图达到同样目的,但我不认为有人给出了答案。任何帮助表示赞赏:D

1 个答案:

答案 0 :(得分:6)

(def maps
  [{:id 2, :category "Big bang theory", :name "The Big Bang!"}
   {:id 3, :category "The big Lebowski", :name "Ethan Coen"}
   {:id 4, :category "Chitty Chitty Bang Bang", :name "Roald Dahl"}])

(filter
 #(some
   (fn [v]
     (when (string? v)
       (-> v
           (str/lower-case)
           (str/includes? "ban"))))
   (vals %))
 maps)