我有一个数组,它包含数字和字母,比如:
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/

10-12 07:34