Ruby on rails 从数组中按日期时间对数组的hashmap排序
我的hashmap如下所示:Ruby on rails 从数组中按日期时间对数组的hashmap排序,ruby-on-rails,sorting,Ruby On Rails,Sorting,我的hashmap如下所示: variable_name[user] = { url, datetime } variable_name[user] << { url1, datetime1 } variable_name[user] << { url2, datetime2 } variable_name[user] << { url3, datetime3 } variable_name[user]={url,datetime} variable_nam
variable_name[user] = { url, datetime }
variable_name[user] << { url1, datetime1 }
variable_name[user] << { url2, datetime2 }
variable_name[user] << { url3, datetime3 }
variable_name[user]={url,datetime}
variable_name[user]在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] }
不过,将其映射回散列并不十分困难。假设变量名称是一个数组,您的意思是:
variable_name[user] = {:url => url, :datetime => datetime }
一种简单的升序排序方法:
variable_name.sort_by {|vn| vn[:datetime]}
要按降序排序,可以使用完整排序:
variable_name.sort {|vn1, vn2| vn2[:datetime] <=> vn1[:datetime]}
variable_name.sort{| vn1,vn2 | vn2[:datetime]vn1[:datetime]}
变量_name.sort_by{vn | vn[:datetime]}。反向
同样有效,我觉得降序排序更清晰。对我来说很有效。谢谢
variable_name.sort {|vn1, vn2| vn2[:datetime] <=> vn1[:datetime]}