So I've built a custom array of users like such:
[["user1",432],["user1",53],["user9",58],["user5",75],["user3",62]]
I want to sort them by the 2n'd value in each array, from largest to smallest. I have a feeling using sort or sort_by for arrays is the way to do this, but I'm not really sure how to accomplish it
If you're interested in sort_by
, you could destructure your inner arrays
array.sort_by { |_, x| x }.reverse
or call the index operator
array.sort_by { |x| x[1] }.reverse
Instead of reversing you could negate values returned from the block.
array.sort_by { |_, x| -x }
array.sort_by { |x| -x[1] }
Yet another alternative would be to use an ampersand and Array#last
.
array.sort_by(&:last).reverse
A solution using sort
could be
array.sort { |x, y| y[1] <=> x[1] }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With