2012-03-08 10 views
10

배열의 배열을 정렬 할 수있는 방법을 알아내는 데 문제가 있습니다. 두 배열은 모두 직선이며, 나는 아주 간단하다고 확신하지만, 그것을 이해하지 못하는 것 같습니다.루비 정렬 배열 배열

여기에 배열의 :

라는 단어가 먼저, 가장 큰 수를 발생 횟수의 값 인 내부 배열의 정수 값을 정렬 할
[["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| b[1] <=> a[1]} 

따라 :

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