【发布时间】:2019-01-03 06:29:38
【问题描述】:
有一个包含许多子数组的矩阵。每个数组具有相同的长度,并且它们的每个第一个元素都是一个字符串,后跟具有这种形式的数字元素:
myArray = [
["revenues", 10, 20, 30],
["expenses", 1, 1, 1],
["expenses", 2, 3, 4],
["revenues", 5, 6, 7],
];
我的目标是通过字符串组合它们并计算每个位置的总和。对于上面的例子,结果必须是:
result = [
["revenues", 15, 26, 37],
["expenses", 3, 4, 5],
];
我尝试通过将它们映射到字符串的值并计算每个位置的总和来做到这一点。它仅适用于第一阶段包含“收入”但仍然不起作用的子数组字符串。
result = myArray.map(s => s[0].includes("revenues")).reduce(function (r, a) {
a.forEach(function (b, i) {
r[i] = (r[i] || 0) + b;
});
return r;
}, []);
有什么建议吗?
【问题讨论】:
-
你尝试使用 json 对象吗?它作为哈希映射工作。你的键是“收入”和“费用”,值是一个对象,1:resultOne,2:resultTwo,3:resultThree
-
我尝试只使用 map 和 reduce。我也会试试的
标签: javascript arrays ecmascript-6 sub-array