运维开发网

基于预定义列表的Ruby排序

运维开发网 https://www.qedev.com 2020-05-27 15:09 出处:网络 作者:运维开发网整理
我有一个对象数组.每个对象都有一个我们称之为display_name的属性. 我想根据预定义的值列表对此数组进行排序. 因此,如果预定义列表看起来像这样[“球”,“猫”,“直升机”,“法国”] 然后,具有与“Ball”匹配的display_name属性的对象位于列表的头部,列表中具有“Cat”的对象位于列表的第二位,依此类推. 你可以使用 Enumerable#sort_by: list = ["
我有一个对象数组.每个对象都有一个我们称之为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"}]
0

精彩评论

暂无评论...
验证码 换一张
取 消