2012-03-08 1 views
10

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

Вот массив:

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

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

ответ

27

Попробуйте также:

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]} 

В зависимости, если вы хотите, по возрастанию или по убыванию.

1

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

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

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

a = [["happy", 1], ["sad", 2], ["mad", 1], ["bad", 3], ["glad", 12]] 
a.sort {|x,y| y[1] <=> x[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]] 
+4

Вы должны * всегда * использовать 'sort_by' для ключевого сортировки. Мало того, что это намного проще * читать, это также более эффективно. В этом случае это будет 'a.sort_by {| el | el [1]} ', который в этом случае является таким же, как' a.sort_by (&: last) '. –

+1

Как мы можем использовать это a.sort_by {| el | el [1]}, если мы хотим заказать его по убыванию? –

+0

@ Vini.g.fer a.sort_by {| el | el [1] * -1}, если el [1] - число – Abel

 Смежные вопросы

  • Нет связанных вопросов^_^