如何在JavaScript中计算矩阵各对应索引位置元素的平均值?
实现矩阵列平均值的简便方法
你完全不用手动写繁琐的循环来存列表、求和再计算平均值,JavaScript的数组高阶方法能让这个逻辑更简洁清晰。下面给你两种实用的实现方式:
方法1:先累加列和,再算平均值
通过reduce遍历矩阵的每一行,累加出每一列的总和,最后用总和除以矩阵的行数得到平均值:
const matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; // 初始化和数组,长度等于矩阵列数,初始值全为0 const columnSums = matrix.reduce((sums, row) => { row.forEach((num, idx) => { sums[idx] += num; }); return sums; }, Array(matrix[0].length).fill(0)); // 计算每列的平均值 const columnAverages = columnSums.map(sum => sum / matrix.length); console.log(columnAverages); // 输出 [4, 5, 6]
方法2:直接针对每列计算求和与平均
针对每个列索引,用reduce直接求和该列的所有元素,再除以行数,全程用map遍历列索引:
const matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; const columnAverages = matrix[0].map((_, colIdx) => { return matrix.reduce((sum, row) => sum + row[colIdx], 0) / matrix.length; }); console.log(columnAverages); // 输出 [4, 5, 6]
这两种方法都避免了手动维护临时列表的繁琐,利用JS原生数组方法让逻辑更紧凑易读。如果你的矩阵存在行长度不一致的情况,可以额外加一行校验(比如检查所有行的长度是否等于第一行),但针对你给出的规则矩阵,这两种方法都能完美运行。
内容的提问来源于stack exchange,提问作者zaklance
相关产品推荐
相关产品推荐

