Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 基于多属性的排序结构_Ruby_Sorting_Struct - Fatal编程技术网

Ruby 基于多属性的排序结构

Ruby 基于多属性的排序结构,ruby,sorting,struct,Ruby,Sorting,Struct,我有一个结构 [#<struct Page page="P3", value=64, query="Q1">, #<struct Page page="P2", value=64, query="Q1">, #<struct Page page="P1", value=48, query="Q1">] [#, #, #] 当我按值对其排序时,它会得到(降序) 现在我想要输出 [#<struct Page page="P2",

我有一个结构

[#<struct Page page="P3", value=64, query="Q1">, 
 #<struct Page page="P2", value=64, query="Q1">, 
 #<struct Page page="P1", value=48,    
 query="Q1">]
[#,
#, 
#]
当我按值对其排序时,它会得到(降序)


现在我想要输出

[#<struct Page page="P2", value=64, query="Q1">, #<struct Page page="P3", value=64, query="Q1">, #<struct Page page="P1", value=48, query="Q1">]


现在,我希望结构按页面属性排序(以最小值为先)。

它不应该是简单的:

x.sort_by(&:page)
如果要按多个属性排序,可以按以下方式进行:

x.sort_by{ | e | [e.page, e.value] }


如果值具有更高的优先级,并且要按降序排序。

是否应该简单地:

x.sort_by(&:page)
如果要按多个属性排序,可以按以下方式进行:

x.sort_by{ | e | [e.page, e.value] }

如果这些值具有更高的优先级,并且要按降序排序。

请尝试以下操作:

s = Struct.new(:page, :value, :query)
a = [["P3", 64,"Q1"],["P2",64,"Q1"],["P1",48,"Q1"]]
a.map!{|i| s.new(*i)}

a.sort_by(&:page).reverse
#>>[#<struct page="P3", value=64, query="Q1">, #<struct page="P2", value=64, query="Q1">, #<struct page="P1", value=48, query="Q1">]
s=Struct.new(:page,:value,:query)
a=[“P3”,64,“Q1”],[“P2”,64,“Q1”],[“P1”,48,“Q1”]]
a、 地图!{| i | s.new(*i)}
a、 排序依据(&:第页)。反向
#>>[#, #, #]
编辑

然后按照您所说的使用以下命令:

a.sort_by{ | e | [-e.value, e.page] }
#=>[#<struct page="P2", value=64, query="Q1">, #<struct page="P3", value=64, query="Q1">, #<struct page="P1", value=48, query="Q1">]
a.sort_by{e}[-e.value,e.page]}
#=>[#, #, #]
尝试以下方法:

s = Struct.new(:page, :value, :query)
a = [["P3", 64,"Q1"],["P2",64,"Q1"],["P1",48,"Q1"]]
a.map!{|i| s.new(*i)}

a.sort_by(&:page).reverse
#>>[#<struct page="P3", value=64, query="Q1">, #<struct page="P2", value=64, query="Q1">, #<struct page="P1", value=48, query="Q1">]
s=Struct.new(:page,:value,:query)
a=[“P3”,64,“Q1”],[“P2”,64,“Q1”],[“P1”,48,“Q1”]]
a、 地图!{| i | s.new(*i)}
a、 排序依据(&:第页)。反向
#>>[#, #, #]
编辑

然后按照您所说的使用以下命令:

a.sort_by{ | e | [-e.value, e.page] }
#=>[#<struct page="P2", value=64, query="Q1">, #<struct page="P3", value=64, query="Q1">, #<struct page="P1", value=48, query="Q1">]
a.sort_by{e}[-e.value,e.page]}
#=>[#, #, #]


您是否尝试过按排序?你的问题有点不清楚。您想按哪种标准对数组进行排序?@undur_gongop想按降序对数组进行排序。当我查看输出时-现在我想要输出部分。@OMG:是的,读一下。但是,看一下标题。你试过按排序吗?你的问题有点不清楚。您想按哪种标准对数组进行排序?@undur_gongop想按降序对数组进行排序。当我查看输出时-现在我想要输出部分。@OMG:是的,读一下。然后,看一下标题。谢谢,但我希望'P2'在“P3”@prashantsahni之前取决于什么标准?谢谢,但我希望'P2'在“P3”@prashantsahni之前取决于什么标准?我希望值按降序排列,页面按升序排列。如果P3,64应该在P2之后,64和P156应该在P356之后,如[[#,#,#,#]]通常是那些没有反对这一荒谬要求的人。我希望值按降序排列,页面按升序排列。如果p3,64应该排在p2,64之后,p1 56应该排在P356之后,比如[#,#,#]]通常是那些没有反对这一荒谬要求的人。