ruby-on-rails - 在 ruby 中合并嵌套的哈希数组
问题描述
在与 common_count 比较时,示例代码 nameA 和 nameB 缺少几个日期。
因此,预期的输出哈希必须存在缺失日期,值为零
先感谢您。
"common_count"=>[
{20190704=>0}, {20190705=>0}, {20190706=>0}, {20190707=>0},
{20190708=>0}, {20190709=>0}, {20190710=>0}, {20190711=>0}
]
}
{
"nameA"=>[
{20190704=>10} {20190706=>50}, {20190707=>10},
{20190708=>0}, {20190709=>10}, {20190710=>0}, {20190711=>40}
],
"nameB"=>[
{20190704=>30}, {20190707=>20},
{20190708=>3}, {20190709=>5}, {20190710=>0}, {20190711=>20}
], ..... etc
}
"nameA"=>[
{20190704=>10}, {20190705=>0}, {20190706=>50}, {20190707=>10},
{20190708=>0}, {20190709=>10}, {20190710=>0}, {20190711=>40}
],
"nameB"=>[
{20190704=>30},{20190705=>0}, {20190706=>0} {20190707=>20},
{20190708=>3}, {20190709=>5}, {20190710=>0}, {20190711=>20}
],...etc
}
解决方案
你可以简单地:
entries = {
"common_count"=>[
{"20190704"=>0}, {"20190705"=>0}, {"20190706"=>0}, {"20190707"=>0},
{"20190708"=>0}, {"20190709"=>0}, {"20190710"=>0}, {"20190711"=>0}
],
"nameA"=>[
{"20190704"=>10}, {"20190706"=>50}, {"20190707"=>10},
{"20190708"=>0}, {"20190709"=>10}, {"20190710"=>0}, {"20190711"=>40}
],
"nameB"=>[
{"20190704"=>30}, {"20190707"=>20},
{"20190708"=>3}, {"20190709"=>5}, {"20190710"=>0}, {"20190711"=>20}
]
}
default = entries.delete("common_count")
default_map = default.inject(:merge)
merged_entries = entries.map do |nameKey, value|
value_map = value.inject(:merge)
merged_value_map = default_map.merge(value_map)
merged_value = merged_value_map.map { |k, v| {k => v} }
{nameKey => merged_value}
end.inject(:merge)
请注意,我必须将散列数组转换为单个散列才能合并散列的内容。然后我将哈希结果还原为哈希数组。
推荐阅读
- visual-studio-code - 重新处理 - VSCode 原因 Refmt 中断项目
- java - 即使消息在消费者端的rabbitmq队列中也得到NULL
- matlab - 如何在matlab中围绕对象中心旋转图像?
- debugging - VS Code:Python 3:调试时如何更改变量?
- microsoft-edge - 提交表单后,Microsoft Edge 中总是出现 Recaptcha 图像质询(不可见的 recaptcha)
- html - 下划线问题
- react-native - 使用 react-native-video 播放视频时显示计时器
- x509certificate - java.security.cert.CertificateException:无法解析证书:java.io.IOException:空输入
- jquery - JQuery AJAX:如何在 json 中迭代并构建 html 表
- c# - 将 html fileupload 值传递给 MVC 5 中的 ac# 方法以绑定到局部视图