我根据给定的参数从 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/