2012-03-08 220 views
10

我有一個問題搞清楚我如何排序數組的數組。兩個陣列都很簡單,我確信它非常簡單,但我似乎無法弄清楚。ruby​​排序陣列

這裏的數組:

[["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)'相同。 – 2012-03-08 12:52:27

+1

我們如何使用這個a.sort_by {| el | el [1]}如果我們想下令降序? – 2015-06-10 15:30:35

+0

@ Vini.g.fer a.sort_by {| el | el [1] * -1}如果el [1]是數字 – Abel 2018-01-31 18:04:33