gpt4 book ai didi

javascript - 高效/优雅地垂直对数组(矩阵)求和

转载 作者:搜寻专家 更新时间:2023-11-01 04:45:11 25 4
gpt4 key购买 nike

在 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));

请注意,我几天前问过一个类似的问题 ( link ),但缺乏全局。

最佳答案

您可以对同一索引处的值求和。

使用:array.reduce(sum)

var sum = (r, a) => r.map((b, i) => a[i] + b);

console.log([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]].reduce(sum));
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 高效/优雅地垂直对数组(矩阵)求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32139773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com