次の配列マップを返す関数があります。
{{498 3} {-498 3}, {99 2} {-99 2}, {499 2} {-499 2}, {100 1} {-100 1}}
そして、2 を返したいと思います。キーが最も高い 499 であるためです。これを行う最善の方法は何ですか?
マップが大きい場合、最も効率的な方法ではありませんが、機能します。
(def am {{498 3} {-498 3}, {99 2} {-99 2}, {499 2} {-499 2}, {100 1} {-100 1}})
(->> am (map key) (sort-by first) last vals first)
=> 2
これを試して:
(let [fval (comp val first)
fkey (comp key first)]
(fval
(reduce
(fn [v e] (if (< (fkey v) (fkey e)) e v))
(keys {{498 3} {-498 3}, {99 2} {-99 2}, {499 2} {-499 2}, {100 1} {-100 1}}))))