我遇到了一个问题,无法弄清如何对一个数组中的另一个数组进行排序。这两个数组都很简单,我相信这很简单,但我似乎无法弄清楚。
这是数组:
[["happy", 1], ["sad", 2], ["mad", 1], ["bad", 3], ["glad", 12]]
我想按照内部数组的整数值进行排序,该值表示单词出现的次数,数字越大越靠前。
我遇到了一个问题,无法弄清如何对一个数组中的另一个数组进行排序。这两个数组都很简单,我相信这很简单,但我似乎无法弄清楚。
这是数组:
[["happy", 1], ["sad", 2], ["mad", 1], ["bad", 3], ["glad", 12]]
我想按照内部数组的整数值进行排序,该值表示单词出现的次数,数字越大越靠前。
请尝试以下方法:
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]}
根据您想要升序还是降序。
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]]
ary = [["happy", 1], ["sad", 2], ["mad", 1], ["bad", 3], ["glad", 12]]
ary.sort { |a, b| b[1] <=> a[1] }
这应该可以做到你想要的。
a = [["happy", 1], ["sad", 2], ["mad", 1], ["bad", 3], ["glad", 12]]
a.sort {|x,y| y[1] <=> x[1]}
sort_by
。不仅更容易阅读,而且更有效率。在这种情况下,你可以使用a.sort_by {|el| el[1] }
,它与a.sort_by(&:last)
相同。 - Jörg W Mittag