【发布时间】:2019-01-03 08:01:05
【问题描述】:
有一个这种形式的二维数组:
arr = [
["12325-a", 1, 1, 1],
["43858-b", 3, 4, 1],
["84329-a", 6, 5, 2],
["18767-b", 0, 9, 0],
["65888-b", 5, 4, 4],
];
每个子数组的第一个元素是一个字符串。
我想将具有相同末端的子数组组合在一起。在这种情况下,它将是两个组:-a 和 -b。
数值应根据 idex 计算为总和。
所以结果应该是这样的:
arr = [
["-a", 7, 6, 3],
["-b", 8, 17, 5],
];
我的解决方案(不起作用):
let arr = [
["12325-a", 1, 1, 1],
["43858-b", 3, 4, 1],
["84329-a", 6, 5, 2],
["18767-b", 0, 9, 0],
["65888-b", 5, 4, 4],
];
result = arr.reduce(function(acc, curr) {
if (acc[curr[0].substr(curr[0].length - 2)]) {
acc[curr[0]] = acc[curr[0]].map(function(val, index) {
if (index) {
return val + curr[index];
}
return val;
});
} else {
acc[curr[0]] = curr;
}
return acc;
}, {});
console.log(result)
【问题讨论】:
标签: javascript arrays