给出以下哈希数组:
values = [
{"one"=>"BA", "two"=>"AAB"},
{"one"=>"AA", "two"=>"BBA"},
{"one"=>"AA", "two"=>"BCB"},
{"one"=>"AA", "two"=>"ABA"},
{"one"=>"BC", "two"=>"AAC"},
{"one"=>"AC", "two"=>"AAB"},
{"one"=>"AC", "two"=>"AAA"},
{"one"=>"AB", "two"=>"BCC"}
]
如何获得以下输出:
{"one"=>"BC", "two"=>"AAC"}
{"one"=>"BA", "two"=>"AAB"}
{"one"=>"AC", "two"=>"AAA"}
{"one"=>"AC", "two"=>"AAB"}
{"one"=>"AB", "two"=>"BCC"}
{"one"=>"AA", "two"=>"ABA"}
{"one"=>"AA", "two"=>"BBA"}
{"one"=>"AA", "two"=>"BCB"}
如果两个键值都指向整数,我可以很容易地做到这一点:
multi_sort = values.sort_by { |x| [-x["one"], x["two"] ] }
使用字符串值执行此操作的语法是什么?
答案 0 :(得分:3)
您可能需要编写完整的sort
方法:
values.sort { |a,b| a["one"] == b["one"] ? a["two"] <=> b["two"] : b["one"] <=> a["one"] }
请注意,对于“one”,比较的顺序为b
vs a
,对于“two”,比较顺序为a
vs b
。
如果您使用符号键而不是字符串,这可能会更简洁。