数组和For循环帮助 - 返回由子数组

时间:2016-12-10 18:01:09

标签: arrays sub-array

以下代码应返回一个数组,该数组由每个提供的子数组中的最大数字组成。

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循环内部还是外部。

1 个答案:

答案 0 :(得分:2)

您永远不会将j重置为0,因此在第一个子数组之后忽略每个子数组的内容。在其循环声明中初始化j时,它已正确重置,因此代码可以正常工作。