Javascript 如何重新格式化对象中的数据。(如何将行设置为键,将其他列设置为值)
我已经能够将数据从GoogleSheets导出到一个非常棒的JSON文件中,只是没有使用我需要的格式(oops:) 基本上,我有数据,其中列名是值头(在本例中:位置、感染、死亡、恢复等),行名分别是值。 是否有办法将其重新格式化为多个对象,以便:Javascript 如何重新格式化对象中的数据。(如何将行设置为键,将其他列设置为值),javascript,jquery,object,google-apps-script,google-sheets,Javascript,Jquery,Object,Google Apps Script,Google Sheets,我已经能够将数据从GoogleSheets导出到一个非常棒的JSON文件中,只是没有使用我需要的格式(oops:) 基本上,我有数据,其中列名是值头(在本例中:位置、感染、死亡、恢复等),行名分别是值。 是否有办法将其重新格式化为多个对象,以便: var death_data = { cn: "132", th: "0", mo: "0", au: "0", sg: "0", }; var infected_data
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)
我发现了一个类似的资源,但是它在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;
}
函数doGet(){
var result={};
var=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data').getDataRange().getValues();
var death=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data').getDataRange().getValues();
结果=makeObject(已感染);
//result.death=makeObject(death);
//Logger.log(结果);
返回ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);
}
函数makeObject(multiArr){
var obj={};
var headers=multiArr.shift();
对于(变量i=0;i
使用上述代码,JSON如下所示(使用JSON查看器chrome扩展):
其中每个键都有值,如下所示:
还有这个
也许有一种更好的方法,比在事后尝试转换格式,而只是第一次正确地生成格式更好
提前为我的JavaScript基础知识道歉,我才刚刚开始
任何帮助都将不胜感激
亲切问候,,
Camden您可以通过在数组上循环并添加相关值来创建这样的对象: 示例脚本:
显示给定数据的预期结果,而不是一些随机样本结果。正如主管所说,从您的数据中获得所需输出的示例将非常有用。你就不能这样吗?所需的输出是以代码格式突出显示的第一个文本。你应该从数据中获得准确的结果。例如,您是如何为中国获得2863的。结果应该表示样本数据的精确输出。很好,这就是我刚才所做的!谢谢你安慰我!给你打勾!:)
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;
}