Ruby数组按多个属性排序

时间:2015-02-28 14:03:09

标签: ruby arrays sorting

test = [["movie5name","2014"],["movie2name","2016"],["movie3name","2016"],["movie3name","2017"]]
testNew = test.sort_by{|n| [-n[1],n[0]]}

我试图通过首先根据年份的降序排序然后根据电影名称的acesding顺序对数组进行排序。 但是,它显示未定义的方法错误,因为n:之前的负号(

1 个答案:

答案 0 :(得分:3)

那是因为你试图让string为负面,请尝试以下代码:

testNew = test.sort_by{|n| [-n[1].to_i,n[0]]}

假设n[1]始终可以转换为数字。