2D Array - DS Вложенный для циклов JavaScript не возвращается - PullRequest
0 голосов
/ 24 августа 2018

Я не могу понять, почему функции возвращают «сумму» после первого цикла for, но не в конце функции.

var a = [
  [1, 1, 1, 0, 0, 0],
  [0, 1, 0, 0, 0, 0],
  [1, 1, 1, 0, 0, 0],
  [0, 0, 2, 4, 4, 0],
  [0, 0, 0, 2, 0, 0],
  [0, 0, 1, 2, 4, 0]
];

function hourglassSum(arr) {
  var sum = 0;
  for (var i = 0; i < arr.length; i++) {
    for (var j = 0; j < arr[i].length; j++) {
      var sumTemp = arr[i][j] + arr[i][j + 1] + arr[i][j + 2] + arr[i + 1][j + 1] + arr[i + 2][j] + arr[i + 2][j + 1] + arr[i + 2][j + 2];
      if (!isNaN(sumTemp) && sumTemp > sum) {
        sum = sumTemp;
      }
    }
    document.write('Sum: ' + sum + '<br/>');
  }
  document.write('Sum: ' + sum + '<br/>');
}

hourglassSum(a);

1 Ответ

0 голосов
/ 24 августа 2018

Ваша проблема в том, что вы пытаетесь получить доступ к индексам массива, превышающим размер массива при вызове:

var sumTemp = arr[i][j] + arr[i][j + 1] + arr[i][j + 2] + arr[i + 1][j + 1] + arr[i + 2][j] + arr[i + 2][j + 1] + arr[i + 2][j + 2];

, потому что вы выполняете цикл до размера массива, а затем вызываете j + 1 или j + 2, чтобольше размера массива и вызывает ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...