在Javascript中,如果我有一个表示矩阵的数组的数组,比如说
x = [
[1,2,3,4],
[5,6,7,8],
[9,10,11,12]
];
把它“横向”求和很容易,可以像这样完成
x.map(function(y){
return y.reduce(function(a,b){
return a+b;
});
});
或者x.map(y => y.reduce((a, b) => a+b));
现在我想计算“垂直”总和,这可以完成。
x.reduce(function(a, b){
return a.map(function(v,i){
return v+b[i];
});
});
或者x.reduce((a, b) => a.map((v,i) => v+b[i]));
但是我对这个版本不太满意,希望能有更好、更优雅、更简单的方法。也许可以事先找一个简单的方法来转置矩阵?有人知道吗?
const x = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
];
const a = x.map((y) => y.reduce((a, b) => a + b));
const b = x.reduce((a, b) => a.map((v, i) => v + b[i]));
const c = x.flat().reduce((a , b) => a + b)
console.log('Summing horizontally: ' + JSON.stringify(a));
console.log('Summing vertically: ' + JSON.stringify(b));
console.log('Summing whole array: ' + JSON.stringify(c));
请注意,我几天前已经问过一个类似的问题(链接),但那个问题缺乏更大的背景。