Массив сортировки 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]}