我有一个数组,它包含数字和字母,比如:
newarray=[“1 A”,“1 B”,“2 C”,“2 A”]
我希望按如下方式对它们进行排序:
newarray=[“2 A”,“2 C”,“1 A”,“1 B”]
我要做的是按降序排列数字,如果数字相同,则按字母顺序排列
我能用sort_by实现一个比较函数吗?或者有没有办法用ruby sort
最佳答案
首先,您应该使用更好的输入表示。您可以分析现有数组,例如:
arr = newArray.map { |s| x,y = s.split; [x.to_i, y] }
# => [[1, "a"], [1, "b"], [2, "c"], [2, "a"]]
然后我们可以使用
sort_by
按自己的意愿排序:arr.sort_by { |x,y| [-x, y] }
# => [[2, "a"], [2, "c"], [1, "a"], [1, "b"]]
关于ruby-on-rails - “自然”对Ruby中的数组进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21895181/