Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从数组中按日期时间对数组的hashmap排序_Ruby On Rails_Sorting - Fatal编程技术网

Ruby on rails 从数组中按日期时间对数组的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

我的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_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]}