有这样一个二维数组:
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
。
数值应该根据索引的和进行计算。
因此,结果应该如下所示:
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)