Ruby合并散列值 [英] Ruby merge hash value

查看:100
本文介绍了Ruby合并散列值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我编写了一个API来组织我的每日用户数据。

I've written an API to organize my daily user data.

原始格式就像

The origin format is like

"dau": {
      "2017-05-02": 1,
      "2017-05-04": 2,
      "2017-05-05": 2,
      }

"new_user": {
      "2017-05-02": 1,
      "2017-05-04": 0,
      "2017-05-07": 0,
}

很难在HTML表格中逐行显示。

It's hard to display in HTML table row by row.

因此,我希望格式变成这个。

Therefore, I want the format to become this one.

然而,我不知道该如何处理。

However, I have no idea how to deal with.

info: {
      "2017-05-02": {
            dau: 1,
            new_user: 1
      },
      "2017-05-04": {
            dau: 2,
            new_user: 0
      },
      "2017-05-05": {
            dau: 2
      },
      "2017-05-07": {
            new_user: 0
      }
}


推荐答案

假设您有 code>,然后

suppose you have data, then

(data['dau'].keys + data['new_user'].keys).uniq.map { |k| [k, { dau: data['dau'][k].to_i, new_user: data['new_user'][k].to_i } ] }.to_h

,如果您不想使用默认值/ 0值,那么,

and if you don't want default/0 values then,

(data['dau'].keys + data['new_user'].keys).uniq.map { |k| [k, { dau: data['dau'][k], new_user: data['new_user'][k] }.compact ] }.to_h

输出:

{
    "2017-05-02" => {
            :dau => 1,
        :new_user => 1
    },
    "2017-05-04" => {
            :dau => 2,
        :new_user => 0
    },
    "2017-05-05" => {
        :dau => 2
    },
    "2017-05-07" => {
        :new_user => 0
    }
}

希望它有帮助..

这篇关于Ruby合并散列值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆