Ruby on rails Can';t排序哈希尝试了几种不同的方法
我想按位置对散列进行排序,我使用的是sort_by,但它并没有像应该的那样进行排序Ruby on rails Can';t排序哈希尝试了几种不同的方法,ruby-on-rails,ruby,sorting,ruby-hash,Ruby On Rails,Ruby,Sorting,Ruby Hash,我想按位置对散列进行排序,我使用的是sort_by,但它并没有像应该的那样进行排序 hash = { "a": {"name": "a", "type": "text", "position": 1, "required": "false"}, "b": {"name": "b"
hash = {
"a": {"name": "a", "type": "text", "position": 1, "required": "false"},
"b": {"name": "b", "type": "text", "position": 4, "required": "false"},
"c": {"name": "c", "type": "text", "position": 2, "required": "false"},
"d": {"name": "d", "type": "text", "position": 3, "required": "false"}
}
要对其进行排序,我使用以下命令
temp = hash.sort_by { |k,v| k[0]['position'] }
没有错误,但我在没有任何排序的情况下得到了上述散列的保存。即使我使用temp来创建新的散列,但它是相同的。在我想要的地方,它应该按位置1,2,3,4排序。它是RubyonRails的一部分,我在其中创建了这些字段。
sort\u by
由两个参数调用,k
和v
,这两个参数引用条目的键和值
由于要按位置排序,因此必须使用v[:position]
:
hash.sort_by { |k, v| v[:position] }
#=> [[:a, {:name=>"a", :type=>"text", :position=>1, :required=>"false"}],
# [:c, {:name=>"c", :type=>"text", :position=>2, :required=>"false"}],
# [:d, {:name=>"d", :type=>"text", :position=>3, :required=>"false"}],
# [:b, {:name=>"b", :type=>"text", :position=>4, :required=>"false"}]]
sort\u by
由两个参数调用,k
和v
,这两个参数引用条目的键和值
由于要按位置排序,因此必须使用v[:position]
:
hash.sort_by { |k, v| v[:position] }
#=> [[:a, {:name=>"a", :type=>"text", :position=>1, :required=>"false"}],
# [:c, {:name=>"c", :type=>"text", :position=>2, :required=>"false"}],
# [:d, {:name=>"d", :type=>"text", :position=>3, :required=>"false"}],
# [:b, {:name=>"b", :type=>"text", :position=>4, :required=>"false"}]]
有趣的是,我尝试了它,但在我的PostgresJSONB中它不起作用,所以我使用了数组符号,现在我意识到我必须首先转换为散列,然后运行上面的命令。谢谢你的帮助。爱你的城市不来梅。有趣的是,我尝试过它,但在我的postgres JSONB中它不起作用,所以我使用数组符号,现在我意识到我必须首先转换为哈希,然后运行上面的命令。谢谢你的帮助。爱你的城市不来梅。