以下代码应返回一个数组,该数组由每个提供的子数组中的最大数字组成。
function largestOfFour(arr) {
var i = 0;
var j= 0;
var collection = [];
var max = 0;
for(i; i < arr.length; i++){
for(j; j < arr[i].length; j++){
if(arr[i][j]> max){
max =arr[i][j];
}
}
collection.push(max);
max = 0;
}
return collection;
}
largestOfFour([[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000,1001 ,857, 1]]);
当我按原样运行时,上面代码的输出输出[27,0,0,0]。当我在每个相应的for循环中声明和初始化i和j时,它给出了正确的答案: [27,5,39,1001]。我的问题是有什么区别?我认为它等同于声明i和j并将它们初始化为0,无论是在for循环内部还是外部。
答案 0 :(得分:2)
您永远不会将j
重置为0,因此在第一个子数组之后忽略每个子数组的内容。在其循环声明中初始化j
时,它已正确重置,因此代码可以正常工作。