在 Ruby 中可以对任何东西进行排序,但请记住,您最终会得到一个排序后的数组。尽管自 Ruby 1.9 以来哈希具有内部顺序,但 Hash#sort 方法仍然返回一个数组。
例如:
hash = {
user1: { name: 'Baz', date: Time.current },
user2: { name: 'Bar', date: Time.current - 1.month },
user3: { name: 'Foo', date: Time.current - 2.months },
}
hash.sort { |x, y| x.last[:date] <=> y.last[:date] }
会给你结果:
[
[:user3, {:name=>"Foo", :date=>Tue, 07 Aug 2012 20:32:23 CEST +02:00}],
[:user2, {:name=>"Bar", :date=>Fri, 07 Sep 2012 20:32:23 CEST +02:00}],
[:user1, {:name=>"Baz", :date=>Sun, 07 Oct 2012 20:32:23 CEST +02:00}]
]
不过,将其映射回散列并不是非常困难。