为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Google App Script 用分隔符拆分数组的总和?

如何使用 Google App Script 用分隔符拆分数组的总和?

当年话下 2022-06-05 17:02:21
我从谷歌表的单列中得到了一个数组,比如[[23],[25],[26],[89],[""],[45],[78],[62],[""],[123],[45],[68]]我如何用空值拆分它[]并获得每个子数组的总和,比如 ( 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],[25],[26],[89],[""],[45],[78],[62],[""],[123],[45],[68]]    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);         }    }    Logger.log(sums) //log: [16345786212345]}我哪里错了,我该如何解决?
查看完整描述

2 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

您可以采用单循环并添加值,直到达到undefined值,然后将总和推送到结果集并重置sum。


最后,也将最终总和推入结果集。


var data = [[23.0], [25.0], [26.0], [89.0], [""], [45.0], [78.0], [62.0], [""], [123.0], [45.0], [68.0]],

    result = [],

    sum = 0,

    value,

    i;


for (i = 0; i < data.length; i++) {

    value = data[i][0];

    if (value === "") {

        result.push(sum);

        sum = 0;

        continue;

    }

    sum += value;

}

result.push(sum);


console.log(result);


查看完整回答
反对 回复 2022-06-05
?
波斯汪

TA贡献1811条经验 获得超4个赞

使用array.reduce,它可以很容易地完成。


const data = [

  [23.0],

  [25.0],

  [26.0],

  [89.0],

  [],

  [45.0],

  [78.0],

  [62.0],

  [],

  [123.0],

  [45.0],

  [68.0]

];

let [result, sum] = data.reduce(

  ([arr, sum], curr) => {

    if (curr.length) sum += curr[0];

    else arr.push(sum);

    return [arr, sum];

  },

  [[], 0]

);

result.push(sum); //push last data

console.log(result);

console.log(result.join("."));


查看完整回答
反对 回复 2022-06-05
  • 2 回答
  • 0 关注
  • 116 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信