我有一个数组objects.每个对象都有一个我们称之为的属性display_name.
我想根据预定义的值列表对此数组进行排序.
因此,如果预定义列表看起来像这样 ["Ball", "Cat", "Helicopter", "France"]
然后,display_name属性匹配的对象"Ball"位于列表的头部,列表中具有"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"}]
Run Code Online (Sandbox Code Playgroud)