Javascript 如何从两个数组中累加和值?

Javascript 如何从两个数组中累加和值?,javascript,multidimensional-array,google-apps-script,google-sheets,Javascript,Multidimensional Array,Google Apps Script,Google Sheets,我有两个数组(数组2是多维的),如下所示: Array 1 = [1795, 3449, 41, 1261, 99, 38162, 36, 7, 2768, 53, 1800] Array 2 = [[33, 0, 0, 433, 17, 2388, 0, 0, 0, 0, 0], [508, 0, 0, 242, 36, 800, 0, 0, 5, 0, 0], [285, 0, 0, 0, 0, 1600, 0, 0, 0, 0, 0], [0, 0, 0, 0

我有两个数组(数组2是多维的),如下所示:

Array 1 = 
 [1795, 3449, 41, 1261, 99, 38162, 36, 7, 2768, 53, 1800]

Array 2 = 
 [[33, 0, 0, 433, 17, 2388, 0, 0, 0, 0, 0],
 [508, 0, 0, 242, 36, 800,  0, 0, 5, 0, 0],
 [285, 0, 0, 0,   0,  1600, 0, 0, 0, 0, 0], 
 [0,   0, 0, 0,   0,  1700, 0, 0, 0, 0, 0], 
 [0,   0, 0, 0,   0,  0,    0, 0, 0, 0, 0]]
[[1795, 3449, 41, 1261, 99,  38162, 36, 7, 2768]
[1828, 3449, 41, 1694, 116, 40550, 36, 7, 2768]
[2336, 3449, 41, 1936, 152, 41350, 36, 7, 2773]
[2621, 3449, 41, 1936, 152, 42950, 36, 7, 2773]
[2621, 3449, 41, 1936, 152, 44650, 36, 7, 2773]
[2621, 3449, 41, 1936, 152, 44650, 36, 7, 2773]]
数组的长度将始终相同

我试图做的是在每个数组位置累积值,因此它们应该如下所示:

Array 1 = 
 [1795, 3449, 41, 1261, 99, 38162, 36, 7, 2768, 53, 1800]

Array 2 = 
 [[33, 0, 0, 433, 17, 2388, 0, 0, 0, 0, 0],
 [508, 0, 0, 242, 36, 800,  0, 0, 5, 0, 0],
 [285, 0, 0, 0,   0,  1600, 0, 0, 0, 0, 0], 
 [0,   0, 0, 0,   0,  1700, 0, 0, 0, 0, 0], 
 [0,   0, 0, 0,   0,  0,    0, 0, 0, 0, 0]]
[[1795, 3449, 41, 1261, 99,  38162, 36, 7, 2768]
[1828, 3449, 41, 1694, 116, 40550, 36, 7, 2768]
[2336, 3449, 41, 1936, 152, 41350, 36, 7, 2773]
[2621, 3449, 41, 1936, 152, 42950, 36, 7, 2773]
[2621, 3449, 41, 1936, 152, 44650, 36, 7, 2773]
[2621, 3449, 41, 1936, 152, 44650, 36, 7, 2773]]
最后一个数组将从上面的行中获取值,并向下累加该值

我尝试过使用map和reduce,但我认为因为array 2是多维的,而且我还是JS的新手,所以我无法让它工作。任何帮助都将不胜感激

这是我已经尝试过的:

var yearSums = array1.map(function (array1Map) {
    return [parseInt(array1Map) + parseInt(array2)]
})
这给了我这样的信息:

[1828.0, 3482.0, 74.0, 1294.0, 132.0, 38195.0, 69.0, 40.0, 2801.0, 86.0, 1833.0]

它所做的是将数组2(33)中的第一个元素添加到数组1中的每个值。

仅适用于长度相同的数组

您必须在每个数组内循环每个数组索引,以获取值并将其相加

更新

没有得到你第一次期望的。更新脚本

var数组1=
[1795, 3449, 41, 1261, 99, 38162, 36, 7, 2768, 53, 1800]
变量array2=
[[33, 0, 0, 433, 17, 2388, 0, 0, 0, 0, 0],
[508, 0, 0, 242, 36, 800,  0, 0, 5, 0, 0],
[285, 0, 0, 0,   0,  1600, 0, 0, 0, 0, 0], 
[0,   0, 0, 0,   0,  1700, 0, 0, 0, 0, 0], 
[0,   0, 0, 0,   0,  0,    0, 0, 0, 0, 0]]
var summedArray=array2.map(arr=>arr.map((subar,i)=>subar+array1[i]))
console.log(summedArray)
使用第一个数组(我们称之为
acc
)作为累加器,同时以嵌套方式映射嵌套数组(
):

 const result = table.map(row => row.map((value, index) => acc[index] += value));

这将变异第一个数组,如果需要不可变性,请克隆它。

我们也可以使用array.reduce来实现相同的结果

var arr1=[1795344411261,993816236,72768,531800];
var arr2=[
[33, 0, 0, 433, 17, 2388, 0, 0, 0, 0, 0],
[508, 0, 0, 242, 36, 800, 0, 0, 5, 0, 0],
[285, 0, 0, 0, 0, 1600, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 1700, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
];
var sumArr=arr2.reduce(
功能(acc、curr){
加速推(
acc[acc.length-1].map(函数(col,idx){
返回col+curr[idx];
})
);
返回acc;
},
[arr1]//将Array1初始化为2D数组。
);

控制台日志(sumArr)您实际尝试了什么来实现这一点?添加你的代码。所以。。。第一行是否替换为array1?@Ruben Apps脚本标记表示ES3 syntax.AFAIK标记应源自问题/相关答案内容。本线程中没有一个提到特定的JavaScript版本或相关平台。你认为这个问题应该包括什么?你注意到在我编辑之前已经有一个使用箭头函数的答案了吗?“顺便说一下,我们有。”鲁本谢谢你的回复。虽然问题本身没有明确提到,但我相信OP包含了标签,让我们知道这是谷歌应用程序脚本。页面上确实显示了
所有问题都标有其主题区域
。如果OP将其视为一个主题区域,并且该标签与手头的问题并非无关,我认为不应根据答案的内容删除该标签。该问题的标签包括。假设OP的目的是为问题添加上下文,那么您提出的解决方案就不能使用,因为Google Apps脚本不支持箭头函数。