ruby-on-rails - Order Hash 并删除第一个键值对

标签 ruby-on-rails ruby hashmap ruby-2.3

我有一个以时间戳为键的哈希。

hash = {
  "2016-05-31T22:30:58+02:00" => {
          "path" => "/",
        "method" => "GET"
  },
  "2016-05-31T22:31:23+02:00" => {
          "path" => "/tour",
        "method" => "GET"
  },
  "2016-05-31T22:31:05+02:00" => {
          "path" => "/contact_us",
        "method" => "GET"
  }
}

我订购了这个系列并得到了第一双这样的:

hash.sort_by {|k, _| k}.first.first

但是我该如何删除它呢?

删除 方法 requires you知道 key 的准确拼写。当然我可以返回 key ,然后在 delete 方法中使用它,但我在想是否有更直接的方法?

最佳答案

您正在寻找的方法是 hash.keys 它返回一个键数组:

hash.delete(hash.keys.min)

编辑:我更新了答案以反射(reflect)必须先对键进行排序,这已添加到原始问题中并由@Shadwell 在对这篇文章的评论中提出。

我按照@Cary Swoveland 的建议将 hash.keys.sort.first 替换为 hash.keys.min,它不仅性能更高,而且在语义上更好。

关于ruby-on-rails - Order Hash 并删除第一个键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37555337/

相关文章:

java - 如何返回二维字符串

ruby-on-rails - 样式echarts - 无法修改标题颜色

ruby-on-rails - 通过 Rescue 发送设备电子邮件

mysql - 使用通用 where 过滤器参数从 mysql 数据库表中删除记录的工具

ruby-on-rails - rails : Testing Cron Jobs in development environment

java - Java8 中简化方法和按 Id 排序时出错 - 收集器

ruby-on-rails - Has_Many :Through or :finder_sql

ruby - 转换为 Rational 时没有用于 fixnum 的 to_r 方法

ruby-on-rails - 我不知道我使用的是哪个版本的 Ruby

java - 与 Java 中的 hashmap 混淆?