如果我有预先确定的顺序,我如何对散列数组排序我有一个数组需要按如下顺序排序:

   array =  [{:attr_name=>:phone, :attr_value=>30}, {:attr_name=>:name, :attr_value=>20}, {:attr_name=>:similarity, :attr_value=>0}, {:attr_name=>:weight, :attr_value=>50}]

我有一个散列,我想根据它来排序:
pre_sorted = {
            :name => 0,
            :phone => 1,
            :weight=> 2,
            :similarity => 3
        }

对数组进行排序后,应该如下所示:
[{:attr_name=>:name, :attr_value=>20}, {:attr_name=>:phone, :attr_value=>30}, {:attr_name=>:weight, :attr_value=>50}, {:attr_name=>"similarity", :attr_value=>0}]

我查看了ruby的sort和sort-by文档,发现了一些相关的问题,但是无法解决,因为我只是从rails开始。

最佳答案

要按给定条件对数组进行排序,可以使用sort_by。在您的例子中,您希望按照pre_sorted散列中的条目进行排序,因此:

array.sort_by do |hash|
  pre_sorted[ hash[:attr_name] ]
end

10-05 20:32
查看更多