通过索引引用求和一组数组



我有一个函数,需要从一组文档中的每个文档中获取一个数组,并将每个数组中的每个位置与第[n]个位置的索引"partner"相加。

数组看起来像这样。。。。。。

[300, 230, 45, 0, 0, 0]
[200, 100, 0, 0, 0, 0]
[2, 1, 0, 0, 0, 0]
...

我想从中返回[502333145,0,0,0]。使用这个问题,我复制了一个reduce函数,所以我的函数现在看起来是这样的。。。

this.projects.forEach(function (project) {
let arrays = project.yearsTotal
result = arrays.reduce(function (r, a) {
a.forEach(function (b, i) {
r[i] = (r[i] || 0) + b;
});
return r
}, []);
})

然而,这告诉我"a.forEach不是一个函数",我必须承认,我不确定reduce函数到底在做什么,但我认为它可能不起作用,因为我的数组不是数组的数组,它们是单独存在的。

Javascript告诉我它们是对象,而不是数组,但我不确定这是否重要。有人能告诉我怎么做吗?

与您链接的问题的区别似乎是您的数字数据,它存储在对象数组中(在属性yearsTotal中(,而不是存储在数字数组中。

如果是这样的话,您可以创建另一个只存储所需值的数组:

const projectYearsTotal = this.projects.map(p => p.yearsTotal);

然后你可以继续减少每一个。

您当前的解决方案试图对数字数组(每个项目的"yearsTotal"值(进行"压缩求和",而不是数字数组。因此forEach is not a function错误。

最新更新