javascript - 如何读取 javascript 数组并将其重新格式化为 JSON 对象?

标签 javascript arrays json node.js google-analytics

我根据给定的参数从 Google Analytics API 获取以下数据。这是一个 JavaScript 数组对象。

[ [ '201801', '(Other)', '129' ],
  [ '201801', 'Direct', '2236' ],
  [ '201801', 'Email', '2' ],
  [ '201801', 'Organic Search', '6263' ],
  [ '201801', 'Referral', '185' ],
  [ '201801', 'Social', '669' ],
  [ '201802', '(Other)', '371' ],
  [ '201802', 'Direct', '2037' ],
  [ '201802', 'Email', '3' ],
  [ '201802', 'Organic Search', '5790' ],
  [ '201802', 'Referral', '162' ],
  [ '201802', 'Social', '515' ],
  [ '201803', '(Other)', '213' ],
  [ '201803', 'Direct', '2465' ],
  [ '201803', 'Organic Search', '8596' ],
  [ '201803', 'Referral', '238' ],
  [ '201803', 'Social', '356' ],
  [ '201804', '(Other)', '65' ],
  [ '201804', 'Direct', '1872' ],
  [ '201804', 'Email', '1' ],
  [ '201804', 'Organic Search', '9275' ],
  [ '201804', 'Referral', '170' ],
  [ '201804', 'Social', '307' ],
  [ '201805', '(Other)', '35' ],
  [ '201805', 'Direct', '2429' ],
  [ '201805', 'Email', '2' ],
  [ '201805', 'Organic Search', '8995' ],
  [ '201805', 'Referral', '234' ],
  [ '201805', 'Social', '341' ],
  [ '201806', 'Direct', '51' ],
  [ '201806', 'Organic Search', '282' ],
  [ '201806', 'Referral', '1' ],
[ '201806', 'Social', '3' ] ]

如果一点都不清楚,请检查这个 GIST:https://gist.github.com/chanakaDe/3ad4e2a51c99386a2737b65a82f034b1

在这个数组中,你可以看到这样的'201801'。这意味着 YEAR 是 2018 年,MONTH 是 1 号。它同样继续。

通常对于一个特定的月份,我们会得到 6 个值,例如 (Other) 、 Direct 、 Email 、 Organic Search 。推荐和社交。在此数组中,同一日期重复 6 次。

我想做的是从中创建一个简单的 JSON 对象。这是我想要创建的格式,以便在我的 AngularJS 前端显示所有这些数据。

[
    {
        "date" : "201801",
        "(Other)" : "129",
        "Direct" : "2236",
        "Email" : "2",
        "OrganicSearch" : "6263",
        "Referral" : "185",
        "Social" : "669"
    },
    {
        "date" : "201802",
        "(Other)" : "371",
        "Direct" : "2037",
        "Email" : "3",
        "OrganicSearch" : "5790",
        "Referral" : "162",
        "Social" : "515"
    }
]

我想要一个这样的 JSON 数组。我试图找到重复的值,然后尝试将它们合并到一个 JSON 对象中(如果附近的元素相同)。很多这样的尝试。但是还是不行。请伙计们,此刻真的很想得到你的帮助。我不擅长数据分析和这类分类工作。请帮帮我。本项目使用 Node.js 8.10.0 完成。

最佳答案

您可以将日期作为哈希表的键并收集所有键值对。稍后仅获取对象数组的值。

var array = [['201801', '(Other)', '129'], ['201801', 'Direct', '2236'], ['201801', 'Email', '2'], ['201801', 'Organic Search', '6263'], ['201801', 'Referral', '185'], ['201801', 'Social', '669'], ['201802', '(Other)', '371'], ['201802', 'Direct', '2037'], ['201802', 'Email', '3'], ['201802', 'Organic Search', '5790'], ['201802', 'Referral', '162'], ['201802', 'Social', '515'], ['201803', '(Other)', '213'], ['201803', 'Direct', '2465'], ['201803', 'Organic Search', '8596'], ['201803', 'Referral', '238'], ['201803', 'Social', '356'], ['201804', '(Other)', '65'], ['201804', 'Direct', '1872'], ['201804', 'Email', '1'], ['201804', 'Organic Search', '9275'], ['201804', 'Referral', '170'], ['201804', 'Social', '307'], ['201805', '(Other)', '35'], ['201805', 'Direct', '2429'], ['201805', 'Email', '2'], ['201805', 'Organic Search', '8995'], ['201805', 'Referral', '234'], ['201805', 'Social', '341'], ['201806', 'Direct', '51'], ['201806', 'Organic Search', '282'], ['201806', 'Referral', '1'], ['201806', 'Social', '3']],
    result = Object.values(
        array.reduce((r, [date, key, value]) => {
            r[date] = r[date] || { date };
            r[date][key] = value;
            return r;
        }, {})
    );

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 如何读取 javascript 数组并将其重新格式化为 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51198634/

相关文章:

c# - 如何在 ASP.NET Web API C# 中返回 JSON 数组

javascript - 服务器上的 session 管理 HTML 客户端和 PHP

javascript - Firebase 函数 :Function returned undefined, 预期的 promise 或值(value)

python - 删除 json 数组转换为元组后出现的逗号

python - 如何为 Numpy 数组的每个像素添加 alpha 值?

javascript - 未捕获( promise )TypeError : Cannot read properties of null (reading 'iso3166_1Alpha2' )/Trying to skip null but cannot

javascript - gulp.js 插件应该在 package.json 里面吗?

javascript - 尝试在用户单击时为 a div 设置动画。

python - 将函数广播到 3D 数组 Python

javascript - 国家->州->城市相关下拉列表显示“对象[对象]”