2

コードのブロックを覚えるだけでなく、自分で作成できるように理解することも好きです。なぜこれが機能するのですか?理解できない。誰かが私にそれを説明できるなら、私はとても感謝しています. 私には次のように見えます:「配列インデックス(配列内の位置)が0より大きい場合、0 =配列インデックス」そして、それが魔法のように配列内の最大数をどのように教えてくれるのか、私には手がかりが1つもありません. これに関する答えを探してみましたが、運がありませんでした。コードの例を次に示します。事前に感謝します。

var array = [3, 4, 5, 21.15, 21, 9];
var largest = 0;

for (i = 0; i < array.length; i++) {
    if (array[i] > largest) {
        largest = array[i];
    }
}
console.log(largest);​
4

6 に答える 6

6

あなたが信じているように、線largest = array[i];は意味しません0 = array[i]largest変数なので、行に到達するたびにの値を現在のlargest = array[i];変更します。largestarray[i]

これが、最後に配列の最大値を取得する理由です。

例:a = [1, 3, 7, 2]

を初期化しますlargest = 0。配列の各要素に対して、次の操作を行います。

largest < 1? yes, so largest = 1
largest < 3? yes, so largest = 3
largest < 7? yes, so largest = 7
largest < 2? no, so do nothing
于 2012-10-31T21:22:10.233 に答える
3
var array = [3, 4, 5, 21.15, 21, 9];
var largest = 0;

    for (i=0; i<array.length; i++) {
    if (array[i]>largest) {
        largest = array[i];
    }
}
console.log(largest);

Iteration 1:
Check if array[0] i.e. 3 is greater than 0 => True : largest = 3

Iteration 2:
Check if array[1] i.e. 4 is greater than 3 => True : largest = 4

Iteration 3:
Check if array[2] i.e. 5 is greater than 4 => True : largest = 5

Iteration 4:
Check if array[3] i.e. 21.25 is greater than 5 => True : largest = 21.25

Iteration 5:
Check if array[4] i.e. 21 is greater than 21.25 => False: largest = 21.25

Iteration 6:
Check if array[5] i.e. 9 is greater than 21.25 => False: largest = 21.25
于 2012-10-31T21:26:47.207 に答える
2
 largest = array[i]; //Assign whatever is at the position 'i' in the array
                     //to the variable 'largest'

 if (array[i]>largest) // See if the value at the position 'i' in the array
                        //is greater than what is contained in the variable 'largest'
于 2012-10-31T21:23:13.417 に答える
1

別のステートメントを追加するconsole.logと、より明確になります。

var array = [3, 4, 5, 21.15, 21, 9];
var largest = 0;

    for (i=0; i<array.length; i++) {
    if (array[i]>largest) {
        console.log(largest + " " + array[i]);
        largest = array[i];
    }
}
console.log(largest);

出力を与える

0 3

3 4

4 5

5 21.15

21.15

array[i]が の現在の値より大きい場合、 の値largestlargestによって上書きされarray[i]ます。配列をループして、毎回比較を行います。

于 2012-10-31T21:24:36.677 に答える
0

それが魔法のように配列の最大数を教えてくれる方法

そうではありません。のため

var largest = 0;

配列の最大値が負の場合、誤っ0て最大値として報告されます。たとえば、var array = [-3, -4, -5, -21.15, -21, -9];thenlargest0ループの最後にある場合、ではありません-3

以下の方がうまくいくはずundefinedであり、配列内の数値に有意義に匹敵する値がない場合に返されます。

var greatestIndex = -1;
for (var i = 0, n = array.length; i < n; ++i) {
  if (greatestIndex >= 0 ? array[i] > array[greatestIndex] : array[i] >= -Infinity) {
    greatestIndex = i;
  }
}
return greatestIndex >= 0 ? array[greatestIndex] : undefined;
于 2012-10-31T21:32:42.413 に答える