给定以下哈希数组:
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"] ] }
使用字符串值执行此操作的语法是什么?
最佳答案
您可能需要编写完整的sort
方法:
values.sort { |a,b| a["one"] == b["one"] ? a["two"] <=> b["two"] : b["one"] <=> a["one"] }
请注意,比较的顺序是“one”的 b
与 a
以及 a
与 b
为“二”。
如果您使用符号键而不是字符串,这可能会更加简洁。
关于ruby - Ruby 哈希上的多字符串元素排序,第一个键降序,第二个键升序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12820941/