javascript - 如何重新格式化对象中的数据。(我怎样才能使行成为键和其他列的值)
问题描述
我已经能够将谷歌表格中的数据导出到一个非常棒的 JSON 文件中,只是不是我需要的格式(哎呀:))。
基本上,我有数据,其中列名是值标题(在这种情况下:位置、感染、死亡、恢复等)和行名分别是值。
有没有办法可以将其重新格式化为多个对象,所以我有:
var death_data = {
cn: "132",
th: "0",
mo: "0",
au: "0",
sg: "0",
};
var infected_data = {
cn: "4415",
th: "8",
mo: "7",
au: "5",
sg: "5",
};
(两个字母是国家代码。CN:3554+277+296+..其他中国值+...152+108+84...+13+6。)(132=125+2+1+1+ 1+1+1)
我在这里找到了一个类似的资源,但是它在 R 中。JavaScript 有类似的方法吗?
如果您想知道我是如何尝试生成对象的:
function doGet() {
var result = {};
var infected = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data').getDataRange().getValues();
var death = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data').getDataRange().getValues();
result = makeObject(infected);
// result.death = makeObject(death);
//Logger.log(result);
return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
}
function makeObject(multiArr) {
var obj = {};
var headers = multiArr.shift();
for(var i = 0; i < headers.length; i++){
obj[headers[i]] = multiArr.map(function(app) {
return app[i];
});
}
return obj;
}
使用上面的代码,JSON 看起来像这样(使用 JSON 查看器 chrome 扩展): 其中每个键都有值,如下所示 :
也许有比事后尝试转换格式更好的方法,而是第一次正确生成它们。
对我的 JavaScript 基本知识提前抱歉,我才刚刚开始。
任何帮助将不胜感激。
亲切的问候,卡姆登
解决方案
您可以通过遍历数组并添加相关值来创建这样的对象:
示例脚本:
function makeObject(multiArr) {
var obj = {deaths:{}, infected:{}};
var headers = multiArr.shift();
multiArr.forEach(function(row){
var [_,country,_,infected,deaths,_] = row;
obj.deaths[country] = obj.deaths[country] || 0;
obj.infected[country] = obj.infected[country] || 0;
obj.deaths[country] = obj.deaths[country] + Number(deaths);
obj.infected[country] = obj.infected[country] + Number(infected);
})
return obj;
}
推荐阅读
- java - 任务应用程序执行失败:compileDebugAidl
- r - R - 在绘图上使用标题作为 x 轴
- reactjs - 为什么 ReactJS 更新状态没有按预期工作?
- python - Django:找不到页面,提出者:django.views.static.serve
- python - 如何在 Python Dash 中触发 mouseout 事件?
- python - Python 无法导入模块
- java - Alternative to the python "Execfile" in JAVA?
- hadoop - Hadoop MapReduce 映射器读取多行而不是一行
- reactjs - react-hook-form & 没有“名称”属性的组件
- ecmascript-6 - Javascript 迁移到导入/导出我必须同时重写每个脚本吗?