1、a = [
{id: 3, category_name: "Horror"},
{id: 4, category_name: "Non-Fiction"},
{id: 5, category_name: "LGBT"},
{id: 6, category_name: "Romance"},
{id: 7, category_name: "Romance"}
]
categories_sorted = [
"Romance",
"LGBT",
"Non-Fiction",
"Horror"
]
p a.sort_by { |h| [categories_sorted.index(h[:category_name]), h[:id]] }
2、a.group_by { |h| h[:category_name] }.values_at(*categories_sorted).flatten