javascript - 如何重新格式化对象中的数据。 (我如何使行成为键,其他列成为值)

标签 javascript jquery object google-apps-script google-sheets

我已经能够将谷歌表格中的数据导出到一个非常棒的 JSON 文件中,只是不是我需要的格式(哎呀:))。

基本上,我的数据中列名是值标题(在本例中:位置、感染、死亡、恢复等),行名分别是值。 enter image description here

有没有办法可以将其重新格式化为多个对象,这样我就可以:

 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",

    };

(这2个字母是国家代码。CN:3554+277+296+..其他中国值+...152+108+84...+13+6。)(132=125+2+1 +1+1+1+1)

我找到了类似的资源here ,但它是在 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 Viewer chrome 扩展): enter image description here 每个键都有值,如下所示: enter image description here 和这个 enter image description here

也许有比事后尝试转换格式更好的方法,而只是第一次正确生成它们。

提前抱歉,我的 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;
}

关于javascript - 如何重新格式化对象中的数据。 (我如何使行成为键,其他列成为值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59974443/

相关文章:

javascript - 使用 jQuery 1.2.1 创建 slider

Javascript/jQuery 将不同的函数参数附加到 .click() 方法

javascript - 如何使用 jQuery 触发类更改事件?

c++ - 在 Windows 上同时使用 .so 和 .dll

oop - 面向对象范式中松耦合和紧耦合有什么区别?

c# - 从对象中删除 null 属性

javascript - D3.js 将整数轴更改为字符串

javascript - 如何用 javascript 和 jQuery 总结几列?

javascript - 单击 Button INSIDE 表上的事件

javascript - 如果在 DOM 中找不到选择器或类,则出现错误 "Cannot read property ' click' of undefined”