Отфильтруйте значения нескольких ключей в записи карты и верните карту с этими записями Clojure - PullRequest
0 голосов
/ 01 июня 2018

Я новичок в 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"}]

Я хочу создать поиск, который ищет слово (например, «запрет») enвернуть карту с теми записями, которые имеют это слово (или его часть) в одном из ключевых значений.

В случае «бана» должно возвращаться

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

На основании приведенной выше карты таблица обновляется только с этими двумя записями.

Я нашел несколько интересных решений, но все они фокусируются на одном ключе (то есть: категории или: имени), но не на всех ключах в записи карты.

Я думаю, этот пытается достичь того же, но я не думаю, что кто-то дал ответ.Любая помощь приветствуется: D

1 Ответ

0 голосов
/ 01 июня 2018
(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)
...