Массив сортировки ruby ​​массива

У меня возникли проблемы с выяснением того, как я могу сортировать массив массива. Оба массива прямолинейны, и я уверен, что это довольно просто, но я не могу понять это.

Здесь массив:

[["happy", 1], ["sad", 2], ["mad", 1], ["bad", 3], ["glad", 12]]

Я хочу отсортировать его по целочисленному значению внутреннего массива, который является значением того, сколько раз это слово произвело наибольшее число.

Ответ 1

Попробуйте либо:

array = [["happy", 1], ["sad", 2], ["mad", 1], ["bad", 3], ["glad", 12]]
sorted = array.sort {|a,b| a[1] <=> b[1]}

Или:

array = [["happy", 1], ["sad", 2], ["mad", 1], ["bad", 3], ["glad", 12]]
sorted = array.sort {|a,b| b[1] <=> a[1]}

В зависимости от того, хотите ли вы восходящий или нисходящий.

Ответ 2

сортировка может использоваться с блоком.

a = [["happy", 1], ["sad", 2], ["mad", 1], ["bad", 3], ["glad", 12]]
a.sort { |o1, o2| o1[1] <=> o2[1] }
#=> [["happy", 1], ["mad", 1], ["sad", 2], ["bad", 3], ["glad", 12]] 

Ответ 3

Использование метода сортировки Array #:

ary = [["happy", 1], ["sad", 2], ["mad", 1], ["bad", 3], ["glad", 12]]
ary.sort { |a, b| b[1] <=> a[1] }

Ответ 4

Это должно делать то, что вы хотите.

a = [["happy", 1], ["sad", 2], ["mad", 1], ["bad", 3], ["glad", 12]]
a.sort {|x,y| y[1] <=> x[1]}