2016-12-10 3 views
0

В приведенном ниже коде должен быть возвращен массив, состоящий из наибольшего числа из каждого предоставленного подматрица.Array and For loop help - возвращает наибольшее число в массиве, состоящем из подмассивов

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], когда я запускаю его как есть. Он дает правильный ответ, когда я объявляю и инициализирую i и j в каждом из соответствующих циклов: [27,5,39,1001]. Мой вопрос в чем разница? Я думал, что это будет равнозначно объявлять i и j и инициализировать их 0, будь то внутри или снаружи циклов for.

ответ

2

Вы никогда не возвращаете j в 0, поэтому он игнорирует содержимое каждой подматрицы после первого. Когда вы инициализируете j в своем объявлении цикла, он правильно перезагружается, поэтому код работает.

+0

var j = 0; внутри первого для исправления тоже. – TigOldBitties

Смежные вопросы