2
这是一个样本阵列例如作为输入:排序一个数组并使其独特上的多个条件 - 红宝石
hashForAnimals = [{
:animalCd=>"Tiger",:animalType=>"Carnivore", :sortOrder =>3},
{:animalCd=>"Cow",:animalType=>"Herbivore", :sortOrder =>5},
{:animalCd=>"Rabbit", :animalType=>"Herbivore", :sortOrder =>2},
{:animalCd=>"Shark",:animalType=>"Carnivore", :sortOrder =>4},
{:animalCd=>"Cow",:animalType=>"Carnivore", :sortOrder =>1},
{:animalCd=>"Bear", :animalType=>"Omnivore", :sortOrder =>7},
{:animalCd=>"Tiger",:animalType=>"Carnivore", :sortOrder =>6}]
预期输出:
hashForAnimals = [{
:animalCd=>"Cow", :animalType=>"Carnivore", :sortOrder =>1},
{:animalCd=>"Rabbit", :animalType=>"Herbivore", :sortOrder =>2},
{:animalCd=>"Tiger",:animalType=>"Carnivore", :sortOrder =>3},
{:animalCd=>"Shark",:animalType=>"Carnivore", :sortOrder =>4},
:animalCd=>"Cow", :animalType=>"Herbivore", :sortOrder =>5}
{:animalCd=>"Bear", :animalType=>"Omnivore", :sortOrder =>7}]
我需要的基础上,对数组进行排序的排序顺序,然后我需要使数组与animalCd相同属于同一组,即animalType。
虎已经出现过一次,最小的排序顺序,但是牛在数组中出现了两次,但有不同的动物类型。
它可以通过将数组收集到多个animalType数组并将其排序并使它们唯一并合并回单个数组来完成。不过,我需要一个优雅的解决方案。我想要
示例代码:
hashForAnimals.sort!{|x,y| x[:sortOrder].to_i<=>y[:sortOrder].to_i}.group_by { |a| a[:animalType]}
我可以将它们组合成单独的哈希值,但然后我需要让个人独特的散列,然后合并到阵列。
这是甚至可能的方式,我接近它?
好吧,我missunderstod你的问题。我认为现在是好的 –
你用'values_at'方法尝试了我的上次更新吗? –
不知道API的values_at。非常感谢您的及时回复! – user122121