2015-10-09 1 views
1

Quelqu'un pourrait-il m'expliquer comment cela fonctionne-t-il? Dans la méthode du nombre le plus élevé, chaque nombre est plus grand que -Infinity. Pourquoi prend-il le nombre le plus élevé? Même avec le plus bas numéro de recherche, comment choisit-il le plus petit nombre, tous les nombres sont plus petits que Infinity.Javascript - trouver les valeurs max et min en utilisant la boucle et le tableau, -Infinity/Infinity

//find highest number 

var Numbers = [1, 2, 101, 45, 55, 1443]; 
var l = Numbers.length; 
var max = -Infinity; 
var i; 
for (i = 0; l > i; i++) { 

    if (Numbers[i] > max) { 

     max = Numbers[i]; 

    } 

} 

console.info(max); 

//find lowest number 

var Numbers = [1, 2, 101, 45, 55, 1443]; 
var l = Numbers.length; 
var max = Infinity; 
var i; 
for (i = 0; l > i; i++) { 

    if (Numbers[i] < max) { 

     max = Numbers[i]; 

    } 

} 

console.info(max); 

Répondre

1

La clé est ici.

if (Numbers[i] > max) { 

    max = Numbers[i]; 

} 

Si le nombre actuel est supérieur au nombre maximum actuel, alors nous faisons que le nombre maximum. Et nous continuons jusqu'à ce que nous passions par tout le tableau.

En commençant par -Infinity, vous vous assurez que toute valeur du tableau sera supérieure ou égale à celle-ci. Pour le minimum c'est pareil mais nous gardons toujours la plus petite valeur que nous trouvons dans la liste.

Infinity et -Infinity sont les valeurs fournies par javascript, elles sont supérieures ou inférieures à toute autre valeur de type Number. Vous pouvez en savoir plus sur eux here.

Vous pouvez déboguer votre code et voir exactement ce qui se passe étape par étape. Vérifiez this link sur la façon de le faire dans Chrome.

+0

ahhhhh, je comprends maintenant, chaque fois 1 boucle se termine, max a une nouvelle valeur et selon qu'il est plus grand/petit et la direction de la flèche va changer –

+0

yup, le débogage fait que très clair. Ou essayez simplement d'imprimer les valeurs i et max chaque fois que les boucles for. :) – toskv

+0

La réponse est tellement évidente, et j'étais coincé à le regarder depuis si longtemps, haha! Merci de l'avoir nettoyé autant! ; d –

1

En utilisant la console, vous pouvez voir que pour le plus bas numéro if conditionner seulement vrai pour une fois lorsque 1 est inférieur à Infinity. D'autres fois, il retourne toujours faux parce que tous les autres nombres sont moins alors 1 donc ici la logique est si nombre de tableau est inférieur à inférieur à max puis la boucle store else continue à boucler.

Identique pour le nombre le plus élevé.

//find highest number 
 
var Numbers = [1, 2, 101, 45, 55, 1443]; 
 
var l = Numbers.length; 
 
var max = -Infinity; 
 
var i; 
 
for (i = 0; l > i; i++) { 
 
    if (Numbers[i] > max) { 
 
    console.log(i + ' max number' + Numbers[i]); 
 
    max = Numbers[i]; 
 
    } 
 
} 
 
console.info(max); 
 

 
//find lowest number 
 
var Numbers = [1, 2, 101, 45, 55, 1443]; 
 
var l = Numbers.length; 
 
var max = Infinity; 
 
var i; 
 
for (i = 0; l > i; i++) { 
 
    if (Numbers[i] < max) { 
 
    console.log(i + ' lowest number' + Numbers[i]); 
 
    max = Numbers[i]; 
 
    } 
 
} 
 
console.info(max);

+0

Les nombres ne sont pas dans l'ordre croissant dans le tableau. De plus, le même tableau est utilisé pour la valeur minimale, cela n'a donc aucun sens. :) – toskv

+1

Mise à jour de la réponse .. –