Avi
Avi

Reputation: 366

Unable to sort a MAP in clojure on the basis of nested fields

I am trying to sort the below map( Clojure) on the basis of "col_nm" field, but unable to do so.

{:Mawb {:user_val "3", :col_nm "1"}, 
 :HawbDate {:user_val "", :col_nm "3"}, 
 :EtlBatchID {:user_val "1", :col_nm "2"}}

The output should be:

{:Mawb {:user_val "3", :col_nm "1"}, 
 :EtlBatchID {:user_val "1", :col_nm "2"}, 
 :HawbDate {:user_val "", :col_nm "3"} }

Can anyone help me, thanks in advance.

Upvotes: 3

Views: 513

Answers (1)

mobyte
mobyte

Reputation: 3752

Try this one:

(def m {:Mawb {:user_val "3", :col_nm "1"},
        :HawbDate {:user_val "", :col_nm "3"},
        :EtlBatchID {:user_val "1", :col_nm "2"}})

(sort-by (comp :col_nm second) m)
=> ([:Mawb {:user_val "3", :col_nm "1"}]
    [:EtlBatchID {:user_val "1", :col_nm "2"}]
    [:HawbDate {:user_val "", :col_nm "3"}])

Upvotes: 5

Related Questions