Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 当多个变量同时调用同一个函数时,google脚本会计算错误_Javascript_Arrays_Object_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 当多个变量同时调用同一个函数时,google脚本会计算错误

Javascript 当多个变量同时调用同一个函数时,google脚本会计算错误,javascript,arrays,object,google-apps-script,google-sheets,Javascript,Arrays,Object,Google Apps Script,Google Sheets,我有以下谷歌脚本: function doGet() { var result1 = {}; var result2 = {}; var result3 = {}; var infected = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data').getDataRange().getValues(); result1 = makeObject1(infected); result2 = makeObjec

我有以下谷歌脚本:

function doGet() {
  var result1 = {};
  var result2 = {};
  var result3 = {};

  var infected = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Data').getDataRange().getValues();


result1 = makeObject1(infected);
result2 = makeObject2(infected);
result3 = makeObject3(infected);  


var confirmed = sum(result1);
Logger.log( "sum: "+confirmed );  

var death = sum(result2);
Logger.log( "sum: "+death );  

var recovered = sum(result3);
Logger.log( "sum: "+recovered );    

//return ContentService.createTextOutput(JSON.stringify(result)).setMimeType(ContentService.MimeType.JSON);




}


function sum(values) {
  var sum = 0;
  for( var el in values ) {
    if( values.hasOwnProperty( el ) ) {
      sum += parseFloat( values[el] );
    }
  }
  return sum;
}



function makeObject1(multiArr) {
  var obj = {};
  var countrystats = {};
  var headers = multiArr.shift();

  for(var i = 0; i < headers.length; i++){
    countrystats[i] = multiArr.map(function(app) {
      return app[i];
    })}

  for(var m = 0; m < countrystats[1].length; m++){
  obj[countrystats[1][m]] = 0;
  }

  for(var j = 0; j < countrystats[1].length; j++){

    var TempVar;
    TempVar = obj[countrystats[1][j]];
    obj[countrystats[1][j]] = TempVar + countrystats[3][j];

  }
  return obj;
}


function makeObject2(multiArr) {
  var obj = {};
  var countrystats = {};
  var headers = multiArr.shift();

  for(var i = 0; i < headers.length; i++){
    countrystats[i] = multiArr.map(function(app) {
      return app[i];
    })}

  for(var m = 0; m < countrystats[1].length; m++){
  obj[countrystats[1][m]] = 0;
  }

  for(var j = 0; j < countrystats[1].length; j++){

    var TempVar;
    TempVar = obj[countrystats[1][j]];
    obj[countrystats[1][j]] = TempVar + countrystats[4][j];

  }
  return obj;
}


function makeObject3(multiArr) {
  var obj = {};
  var countrystats = {};
  var headers = multiArr.shift();

  for(var i = 0; i < headers.length; i++){
    countrystats[i] = multiArr.map(function(app) {
      return app[i];
    })}

  for(var m = 0; m < countrystats[1].length; m++){
  obj[countrystats[1][m]] = 0;
  }

  for(var j = 0; j < countrystats[1].length; j++){

    var TempVar;
    TempVar = obj[countrystats[1][j]];
    obj[countrystats[1][j]] = TempVar + countrystats[5][j];

  }
  return obj;
}
这是正确的。但是,当我只运行其中一个时,它就起作用了。(例如,我注释掉result1和result2,得到result3的正确值。或者我注释掉result1和result3,得到result2的正确值。我认为result1总是正确的)

输出应为:

[20-02-02 18:52:25:651 CET] sum: 14549
[20-02-02 18:52:25:652 CET] sum: 305
[20-02-02 18:52:25:652 CET] sum: 340
答复:


Shift()删除了第一行。仅使用此选项一次即可删除标题,然后使用数组[0]访问数据。

当然,当使用同一参数调用这些函数时,它们的行为会有所不同-它们都会修改给定的参数。(特别是,它们删除了给定数组的第一行…)我缺少什么吗?请阅读有关删除
shift()
的内容,您可以使用
multiArr[0]
[20-02-02 18:52:25:651 CET] sum: 14549
[20-02-02 18:52:25:652 CET] sum: 305
[20-02-02 18:52:25:652 CET] sum: 340