Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何重新格式化对象中的数据。(如何将行设置为键,将其他列设置为值)_Javascript_Jquery_Object_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 如何重新格式化对象中的数据。(如何将行设置为键,将其他列设置为值)

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

我已经能够将数据从GoogleSheets导出到一个非常棒的JSON文件中,只是没有使用我需要的格式(oops:)

基本上,我有数据,其中列名是值头(在本例中:位置、感染、死亡、恢复等),行名分别是值。

是否有办法将其重新格式化为多个对象,以便:

 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;
}