如何使用 Apps 脚本对二维数组中的重复项目求和?

问题描述 投票:0回答:1

你会如何获取这样的数组:

arr1 = [[1150-500101-1000005530, 2750.0],  
        [1150-500101-1000005530, 275.0], 
        [1150-500101-1000008371, 825.0],  
        [1150-500101-1000014950, 550.0],  
        [1150-500101-1000019105, 589.0],  
        [1150-500101-1000019111, 589.0],  
        [1150-500101-1000019111, 275.0]]

并合并每个数组第一个值中的重复值 (arr1[i][0])

为了得到这样的东西:

reducedArr1 = [[1150-500101-1000005530, 3025.0],
               [1150-500101-1000008371, 825.0],
               [1150-500101-1000014950, 550.0],
               [1150-500101-1000019105, 589.0],
               [1150-500101-1000019111, 864.0]]

这些值从 Google 表格中提取时会不断变化。

我试图找到类似的问题,但没有找到任何无需分配密钥即可应用的问题。我真正寻找的是为二维数组制作的 SUMIF,这样我就可以将这个新数组添加到 Google Sheet 报告中。

谢谢

google-apps-script multidimensional-array reduce sumifs
1个回答
0
投票

对二维数组中的重复项求和:

function myfunk() {
  let arr1 = [["1150-500101-1000005530", 2750.0], ["1150-500101-1000005530", 275.0], ["1150-500101-1000008371", 825.0], ["1150-500101-1000014950", 550.0], ["1150-500101-1000019105", 589.0], ["1150-500101-1000019111", 589.0], ["1150-500101-1000019111", 275.0]];
  var obj = { pA: [] };
  arr1.forEach((r,i) =>  {
    let p = r[0];
    if(!obj.hasOwnProperty(p)) {
      obj[p] = {id:r[0],value:r[1]};
      obj.pA.push(p);
    } else {
      obj[p].value += r[1];
    }
  })
  let arr = obj.pA.map(p => [obj[p].id,obj[p].value]);
  Logger.log(JSON.stringify(arr));
}

Execution log
10:45:26 AM Notice  Execution started
10:45:27 AM Info    [["1150-500101-1000005530",3025],["1150-500101-1000008371",825],["1150-500101-1000014950",550],["1150-500101-1000019105",589],["1150-500101-1000019111",864]]
10:45:28 AM Notice  Execution completed
© www.soinside.com 2019 - 2024. All rights reserved.