我有一个由其他两个数组组成的数组,每个数组都是由所有者分组的pets,然后按如下所示的方法进行排序:
def all_pets
#set order by fur color
order = ['Dogs', 'Cats', 'Reptiles', 'Other']
all_pets = first_pet_array + second_pet_array
#^two arrays being added together
all_pets.sort_by {|r| [order.index(r[:pet_type])]}
end
我的输出看起来像这样:
[{:owner=>"Mike", :names=>["Fido", "Sam"], :ids=>[234, 871], :pet_type => "Dogs"} ,
{:owner=>"Becca", :names=>["Sparky", "Paws"], :ids=>[833, 287], :pet_type => "Dogs"} ,
{:owner=>"Tom", :names=>["Pepper"], :ids=>[143], :pet_type => "Dogs"} ,
{:owner=>"Andy", :names=>["Whiskers", "Fred"], :ids=>[068, 978], :pet_type => "Cats"} ,
{:owner=>"Amy", :names=>["Benny"], :ids=>[567], :pet_type => "Cats"} ,
{:owner=>"Chris", :names=>["Toothless", "Ka"], :ids=>[169, 659], :pet_type => "Reptiles"} ,
{:owner=>"John", :names=>["Moe", "Scaley"], :ids=>[993, 036], :pet_type => "Reptiles"} ,
{:owner=>"Jenny", :names=>["Susie", "Howie"], :ids=>[555, 075], :pet_type => "Other"}]
我想先按all_pets
对pet_type
进行排序,然后再按降序对ids
进行排序。我已经按all_pets
排序了pet_type
,这很好。
但是,我坚持按all_pets
对ids
进行排序之后,对pet_type
进行降序排序。经过一番阅读后,我看到了类似问题的答案,其中有些人建议使用-r[:ids]
开头的内容按ID降序排列。
但是,当我将其添加到我的sort_by
行中时,就像这样:
all_pets.sort_by {|r| [order.index(r[:pet_type]), -r[:ids]]}
我收到一条错误消息,内容为:
undefined method `-@' for [234, 871]:Array
我相信我会收到此错误,因为有两个ID?在这种情况下,我该如何按ids
降序排序?
谢谢!