我想按照几个动态条件对哈希数组进行排序。假设我有以下数组:
persons = [
{
id: 1,
first_name: "Bill",
last_name: "Zamora",
age: 37
},
{
id: 2,
first_name: "Alexia",
last_name: "Reyes",
age: 70
},
{
id: 3,
first_name: "Anthony",
last_name: "Nelson",
age: 25
}
]
我知道您可以使用以下代码轻松地按多个条件对数组进行排序。
persons.sort_by!{ |p| [p[:age], p[:first_name]] }
然而,在这个例子中,用于排序数组的字段数量和顺序是硬编码的。在我的情况下,这是在运行时动态确定的。因此,我不知道数组要按多少字段排序,也不知道以哪种顺序对字段进行排序。
我正在寻找一种优雅的解决方案来使用我在之前不知道的配置对象对数组进行排序。这样的配置可能看起来像这样:
sort_settings = [
{
field: "first_name",
order: "asc"
},
{
field: "age",
order: "desc"
}
]
非常感谢您对此的任何帮助!
sort_settings
中的field
值作为符号而不是字符串,因为您原始哈希表中的键是符号。 - sawa#reverse
来获取相反的顺序。更新:实际上,这只有在按多个具有不同顺序的字段进行排序时才有帮助。 - Kris