Как разделить суммы массива с разделителем? - PullRequest
0 голосов
/ 28 марта 2020

Я получил массив из одного столбца на листе Google, например [[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]
}
Где я не прав и как это исправить? Спасибо!

1 Ответ

1 голос
/ 28 марта 2020
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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...