【发布时间】:2018-08-24 13:15:58
【问题描述】:
我似乎无法弄清楚为什么函数在第一个 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);
【问题讨论】:
-
因为你在循环体结束后使用了
document.write语句。请参阅this example 了解如何从函数返回值。 -
你怎么知道的?
-
嗨!请环顾四周,并通读help center,尤其是How do I ask a good question? Jon Skeet 的question checklist 也是不错的读物。代码应该做什么?它正在做的事情是什么,而不是这是一个问题?另请注意,由于
j可以是arr[i]中最后一个条目的索引,因此使用arr[i][j + anything_greter_than_zero]将导致undefined。 -
hackerrank.com/challenges/2d-array/problem 这就是问题所在。我知道我会变得不确定,这就是我使用 isNaN 的原因。该函数工作并在第二个 for 循环内返回 sum,但它不会在函数结束时返回。
标签: javascript loops for-loop matrix