arrays - ruby/索引哈希/空 nil
问题描述
具有以下索引哈希:
{
'1' => { a: :b },
'2' => { c: :d },
'3' => nil,
'4' => { e: :f }
}
我会在删除空键的同时研究“重置”索引键;换句话说,产生以下内容:
{
'1' => { a: :b },
'2' => { c: :d },
'3' => { e: :f }
}
获得这种结果的最佳方法是什么?
解决方案
只需过滤值并分配新键。
hash.
values.
reject(&:nil?). # or `compact`, credits to @KimmoLehto
map.
with_index(1) { |v, i| [i.to_s, v] }.
to_h
#⇒ {"1"=>{:a=>:b}, "2"=>{:c=>:d}, "3"=>{:e=>:f}}
另请参阅@Stefan 的宝贵评论,以获得更简洁的 2.5+ 版本,使用Hash#transform_keys
.
推荐阅读
- ios - Xcode 意外退出
- terraform - Terraform:是否可以仅依赖资源列表中的 1 个资源?
- mongodb - 忘记了 mongodb 管理员数据库凭据。重置一切
- r - 加载包时 MacOS Mojavew 中的 Java 错误
- google-bigquery - 如何使用 Big Query 查找每次浏览量的跳出率?
- graphql - 在石墨烯python中访问父字段的内容
- python - 通过邮件发送用户认证
- r - 如何更改数据在ggplot中出现的顺序
- discord - 有没有办法对使用 discord.js 发送的每条消息做出反应
- php - 如何在一定数量后打破表格元素?