我有一个对象数组,如下所示:
vendors = [
{
name: "Junction"
},
{
name: "Woodside",
is_new: "on"
},
{
name: "Midtown"
}
]
通过存在属性" is_new"来订购此数组的更好方法是什么?我希望对象带有" is_new"属性显示在顶部。
答案 0 :(得分:6)
有sort_by
方法:
vendors.sort_by { |v| v[:is_new] ? 0 : 1 }
您只需要创建每个元素使用的“排序键”,然后对数组进行排序,就像这些值一样。任何可排序的值,如数字或字符串都可以使用。
答案 1 :(得分:0)
这是另一种方式:
vendors.select { |h| h.key?(:is_new) } + vendors.reject { |h| h.key?(:is_new) }
# => [{:name=>"Woodside", :is_new=>"on"}, {:name=>"Junction"},
# {:name=>"Midtown"}]