【发布时间】:2019-01-24 16:35:46
【问题描述】:
我有 2 个数组(数组 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]]
最终的数组会取上一行的值并向下累加。
我尝试过使用 map 和 reduce,但我认为因为数组 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 中的每个值中。
【问题讨论】:
-
您实际上尝试过什么来实现这一目标?添加您的代码。
-
那么...第一行被array1替换了吗?
-
@Ruben Apps-script 标签表示 ES3 语法。
-
AFAIK 标签应源自问题/相关答案内容。该线程中没有一个提到特定的 JavaScript 版本或相关平台。是什么让您认为 google-apps-script 应该包含在这个问题中?您是否注意到在我编辑之前已经使用箭头功能给出了答案?顺便说一句,我们有ecmascript-3。
-
@Ruben 谢谢你的回复。尽管问题本身没有明确提及,但我相信 OP 包含该标签是为了让我们知道这是 Google-apps-script。 Tour 页面确实说
All questions are tagged with their subject areas。如果 OP 认为它是一个主题领域,并且该标签与手头的问题并非无关,我认为不应该根据答案的内容将其删除。
标签: javascript multidimensional-array google-apps-script google-sheets