矩阵元素总和

时间:2019-10-20 14:07:51

标签: javascript matrix

我想获取矩阵元素的总和(数字为0的那些元素除外)并得到错误: 未捕获的TypeError:无法设置未定义的属性“ 0”

function matrixElementsSum(matrix) {
let s = 0;
for (var i = 0; i < matrix.length; i++) {
    for (var j = 0; j <= matrix.length; j++) {
        if (matrix[i][j] == 0) {
            matrix[i+1][j] = 0;
        }
        s += matrix[i][j]
    }
}
return s
}
console.log(matrixElementsSum([[0, 1, 2, 0], 
                               [0, 3, 2, 1], 
                               [2, 0, 2, 3]]))

2 个答案:

答案 0 :(得分:0)

您的循环计数器i应该遍历行数,j应该遍历列数。同样,在将matrix[i+i][j]设置为0之前,您还应该检查i+1 < matrix.length(行数)

function matrixElementsSum(matrix) {
    let s = 0;
    for (var i = 0; i < matrix.length; i++) {
        for (var j = 0; j < matrix[0].length; j++) {
            if (matrix[i][j] == 0 && i+1 < matrix.length) {
                matrix[i+1][j] = 0;
            }
            s += matrix[i][j]
        }
    }
    return s
}

答案 1 :(得分:0)

这是我对这个问题的解决方案。希望它会帮助某人。

function matrixElementsSum(matrix) {
    let susp = [];
    return matrix.reduce((t, arr, i)=>{
        return arr.reduce((tt, val, ii)=>{
            if (val === 0) susp.push(ii);
            if (susp.includes(ii)) {
               return tt;
            } else {
               return tt+val;
            } 
        }, 0) + t;
    }, 0); 
}