我有一个对象数组.每个对象都有一个我们称之为display_name的属性.
我想根据预定义的值列表对此数组进行排序.
因此,如果预定义列表看起来像这样[“球”,“猫”,“直升机”,“法国”]
然后,具有与“Ball”匹配的display_name属性的对象位于列表的头部,列表中具有“Cat”的对象位于列表的第二位,依此类推.
你可以使用 Enumerable#sort_by:list = ["Ball", "Cat", "Helicopter", "France"] elements = [{:display_name => 'Cat'}, {:display_name => 'Unknown'}, {:display_name => 'Ball'}] # sort by index in the list. If not found - put as last. elements.sort_by { |e| list.index(e[:display_name]) || list.length } # => [{:display_name=>"Ball"}, {:display_name=>"Cat"}, {:display_name=>"Unknown"}]
精彩评论