Skip to content

Instantly share code, notes, and snippets.

Created May 11, 2016 16:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/d25940fa7782ded7856ed9d276850c99 to your computer and use it in GitHub Desktop.
Save anonymous/d25940fa7782ded7856ed9d276850c99 to your computer and use it in GitHub Desktop.
Complex map for walking tutorial
(def m {"1234" [{:alert 1,
:lines [{:column1 "val1", :column2 "val2", :column3 "val13"}
{:column1 "val3", :column2 "val4", :column3 "val14"}]}
{:alert 2,
:lines [{:column1 "val5", :column2 "val6", :column3 "val15"}]}],
"4455" [{:alert 4,
:lines [{:column1 "val7", :column2 "val8", :column3 "val16"}
{:column1 "val9", :column2 "val10", :column3 "val117"}]}
{:alert 5,
:lines [{:column1 "val11", :column2 "val12", :column3 "val18"}]}]})
-- The goal structure
(def m1 {"1234" [{:alert 1,
:lines [{:column1 "val1", :column3 "val13"}
{:column1 "val3", :column3 "val14"}]}
{:alert 2,
:lines [{:column1 "val5", :column3 "val15"}]}],
"4455" [{:alert 4,
:lines [{:column1 "val7", :column3 "val16"}
{:column1 "val9", :column3 "val117"}]}
{:alert 5,
:lines [{:column1 "val11",:column3 "val18"}]}]})
@borkdude
Copy link

borkdude commented May 11, 2016

Without Specter:

(zipmap (keys m)
        (map (fn [v]
                 (mapv #(update % :lines
                                (fn [v]
                                    (mapv
                                     (fn [m]
                                         (dissoc m :column2)) v)))
                       v))
             (vals m)))

With Specter (with thanks to Nathan Marz):

(transform [ALL LAST ALL :lines ALL] #(dissoc % :column2) m)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment