2D数组-DS内嵌for循环javascript没有回报

时间:2018-08-24 13:15:58

标签: javascript loops for-loop matrix

我似乎无法弄清楚为什么函数在第一个for循环之后而不是在函数末尾返回“ sum”。

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 :(得分:1)

您的问题是您在调用时试图访问大于数组大小的数组索引:

import Enzyme, { shallow, render, mount } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
// React 16 Enzyme adapter
Enzyme.configure({ adapter: new Adapter() });

因为要循环到数组的大小,然后调用j + 1或j + 2(现在大于数组的大小,并导致错误)。