Sort_by Ruby,One Descending,One Ascending
发布时间:2020-12-17 03:40:57 所属栏目:百科 来源:网络整理
导读:我已经搜索了这个答案无济于事,有一个类似的问题,但答案在这种情况下不起作用,它对数字项进行排序. Similar Question -That did not work我试图使用ruby的sort_by来排序一个项目,而另一个项目以另一个升序排序.我能找到的就是其中之一. 这是代码: # Primary
我已经搜索了这个答案无济于事,有一个类似的问题,但答案在这种情况下不起作用,它对数字项进行排序.
Similar Question -That did not work我试图使用ruby的sort_by来排序一个项目,而另一个项目以另一个升序排序.我能找到的就是其中之一.
这是代码: # Primary sort Last Name Descending,with ties broken by sorting Area of interest. people = people.sort_by { |a| [ a.last_name,a.area_interest]} 任何指导肯定会有所帮助. 样本数据: 输入 >罗素,逻辑 产量 >图灵,算法 解决方法
创建一个反转< =>结果的自定义类(包括
Comparable ).
使用自定义类包装要按降序排序的对象. 例: class Descending include Comparable attr :obj def initialize(obj) @obj = obj end def <=>(other) return -(self.obj <=> other.obj) end end people = [ {last_name: 'Russell',area_interest: 'Logic'},{last_name: 'Euler',area_interest: 'Graph Theory'},{last_name: 'Galois',area_interest: 'Abstract Algebra'},{last_name: 'Gauss',area_interest: 'Number Theory'},{last_name: 'Turing',area_interest: 'Algorithms'},] puts people.sort_by {|person| [ Descending.new(person[:last_name]),# <--------- person[:area_interest],]} 输出: {:last_name=>"Turing",:area_interest=>"Algorithms"} {:last_name=>"Russell",:area_interest=>"Logic"} {:last_name=>"Gauss",:area_interest=>"Number Theory"} {:last_name=>"Galois",:area_interest=>"Abstract Algebra"} {:last_name=>"Galois",:area_interest=>"Logic"} {:last_name=>"Euler",:area_interest=>"Graph Theory"} 顺便说一句,如果你想要降序的对象是一个数值,你可以简单地使用一元运算符 – : people.sort_by {|person| [-person.age,person.name] } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |