在Javascript中引用矩阵时出错

时间:2017-12-01 03:10:28

标签: javascript arrays for-loop matrix

我在尝试访问矩阵中的数据时遇到此错误。我也试过使用两个for循环,但我得到了完全相同的错误

function matrixElementsSum(matrix) {

var answer = 0;

for(var i = 0 ; i < matrix[0].length; i++){ //gets horizontal axis

    var j = 0;

    while(matrix[j][i] !== 0 && j < matrix.length){
        answer += matrix[j][i];
        j++;
    }
}

return answer;
}

console.log(matrixElementsSum(
[[1,1,1,0], 
 [0,5,0,1], 
 [2,1,3,10]]));

错误是:

Deferred exception: matrix[j] is undefined 

我不知道自己做错了什么。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

function matrixElementsSum(matrix) {

  var answer = 0;

  for (var i = 0; i < matrix.length; i++) { //gets horizontal axis



      for (var j = 0; j < matrix[i].length; j++) {
          answer += matrix[i][j];

      }
  }

  return answer;
}

console.log(matrixElementsSum(
  [
      [1, 1, 1, 0],
      [0, 5, 0, 1],
      [2, 1, 3, 10]
  ]));

答案 1 :(得分:0)

可以使用

for...of循环使其更容易(在Internet Explorer中不受支持):

&#13;
&#13;
function matrixElementsSum(matrix) 
{
  var answer = 0;

  for (var array of matrix)
    for (var number of array)
      answer += number;

  return answer;
}

console.log( matrixElementsSum( [[1,1,1,0], [0,5,0,1], [2,1,3,10]] ) );
&#13;
&#13;
&#13;

对于Internet Explorer,可以在TypeScript Playground

上转换for循环版本