【问题标题】:How to split sums of array with separator?如何用分隔符拆分数组的总和?
【发布时间】:2020-03-28 13:55:00
【问题描述】:

我从谷歌表格的单列中得到了一个数组,例如[[23.0], [25.0], [26.0], [89.0], [], [45.0], [78.0], [62.0], [], [123.0], [45.0], [68.0]] 如何用空值 [] 拆分它并获得每个子数组的总和,例如 (163/185/236) 或更多,因为数组长度可能超过 1000,包括 20-50 个空值? 我从答案中修改了脚本。但它在我的情况下不起作用。我不明白为什么?

function getSums(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName('TemplateTest');
  var r = sh.getRange(1, 1, sh.getLastRow());
  var arr = r.getValues(); //log: [[23.0], [25.0], [26.0], [89.0], [], [45.0], [78.0], [62.0], [], [123.0], [45.0], [68.0]]
    var sums = [];
    var sum = 0;
    // iterate through the array
    for (var i = 0; i < arr.length; i ++) {
         if (arr[i].length == null || i == arr.length - 1) {
             // empty array, push sum to array and reset
             sums.push(sum);
             sum = 0;
         } else {
        // array has values, sum them up and add to sum
             sum += arr[i].reduce((a, b) => a + b);
         }
     }
    Logger.log(sums) //log: [16345786212345]
}
我错在哪里以及如何解决? 谢谢!

【问题讨论】:

    标签: javascript google-apps-script google-sheets


    【解决方案1】:
    var arr = [[23.0], [25.0], [26.0], [89.0], [], [45.0], [78.0], [62.0], [], [123.0], [45.0], [68.0]];
    var sums = [];
    var sum = 0;
    // iterate through the array
    for (var i = 0; i < arr.length; i ++) {
        if (arr[i].length == 0 || i == arr.length - 1) {
            // empty array, push sum to array and reset
            sums.push(sum);
            sum = 0;
        } else {
            // array has values, sum them up and add to sum
            sum += arr[i].reduce((a, b) => a + b);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 2022-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-15
      • 1970-01-01
      相关资源
      最近更新 更多