嘿,我有这个代码,但我想反转只有:a键。
(sort-by (juxt :a :b) [{:a 1 :b 3} {:a 1 :b 2} {:a 2 :b 1}])
;;=> [{:a 1 :b 2} {:a 1 :b 3} {:a 2 :b 1}]
我试过,但这是在错误的顺序。
(sort-by (juxt :a :b) #(compare %2 %1) [{:a 1 :b 3} {:a 1 :b 2} {:a 2 :b 1}])
;;=> ({:a 2, :b 1} {:a 1, :b 3} {:a 1, :b 2})
我想得到。
;;=> ({:a 2, :b 1} {:a 1, :b 2} {:a 1, :b 3})
我可以做这个也在juxt?
(sort-by (juxt (comp - :a) :b) [{:a 1 :b 3} {:a 1 :b 2} {:a 2 :b 1}])
这个问题以及Clojure中有关比较器和排序的相关问题在这篇指导文章中都有介绍。https:/clojure.orgguidescomparators
你可以尝试用最后一个线程的宏来进行排序,先用 :b
然后倒序 :a
.
(->> [{:a 1 :b 3} {:a 1 :b 2} {:a 2 :b 1}]
(sort-by :b)
(sort-by :a #(compare %2 %1)))