2

次の配列マップを返す関数があります。

{{498 3} {-498 3}, {99 2} {-99 2}, {499 2} {-499 2}, {100 1} {-100 1}}

そして、2 を返したいと思います。キーが最も高い 499 であるためです。これを行う最善の方法は何ですか?

4

5 に答える 5

2

マップが大きい場合、最も効率的な方法ではありませんが、機能します。

(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
于 2014-10-03T19:41:37.133 に答える
0

これを試して:

(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}}))))
于 2014-10-05T12:05:15.360 に答える