ruby排序数组的数组

时间:2012-03-08 10:06:52

标签: ruby-on-rails ruby arrays enumeration

我在弄清楚如何对数组的数组进行排序时遇到了问题。两个阵列都很直接,我确信它很简单,但我似乎无法弄明白。

这是数组:

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

我想用内部数组的整数值对它进行排序,这是一个单词出现次数的值,最大的数字是第一个。

4 个答案:

答案 0 :(得分:31)

尝试:

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 :(得分:2)

sort可以与块一起使用。

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

答案 2 :(得分:1)

使用Array#sort方法:

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

答案 3 :(得分:1)

这应该做你想要的。

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