2016-12-10 4 views
0

以下のコードは、それぞれのサブ配列から最大の配列を返します。ArrayとForループのヘルプ - サブアレイからなる配列の中で最大の番号を返します

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を宣言し、forループの内側であろうとなかろうと0に初期化することと同等であると考えました。

答えて

2

jを0にリセットすることはないので、最初のサブアレイの後に各サブアレイの内容は無視されます。ループ宣言でjを初期化すると、正しくリセットされ、コードが機能します。

+0

var j = 0;最初のためにそれもそれを修正するだろう。 – TigOldBitties

関連する問題