Fel*_*ger 5 ruby ruby-on-rails 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"
}
}
Run Code Online (Sandbox Code Playgroud)
我订购了这个系列并获得了第一对,如下所示:
hash.sort_by {|k, _| k}.first.first
Run Code Online (Sandbox Code Playgroud)
但是我该如何删除它?
该delete方法要求您知道密钥的exakt拼写.当然我可以返回密钥然后在delete方法中使用它,但我在想是否还有更直接的方法?
您正在寻找的方法是hash.keys返回键的数组:
hash.delete(hash.keys.min)
编辑:我已经更新了答案,以反映必须首先对密钥进行排序,这已添加到原始问题中,并由@Shadwell在本文的评论中提出.
我按照@Cary Swoveland的建议替换hash.keys.sort.first了hash.keys.min它,它不仅性能更高,而且语义更好.
另请注意,shift可以在哈希值上使用.
hash.shift
从哈希中删除第一个键值对.也适用于数组.
| 归档时间: |
|
| 查看次数: |
1397 次 |
| 最近记录: |