2016-11-01 5 views
0

Je dois créer et array donné un nombre (n). Le tableau aura tous les nombres jusqu'à et y compris ce nombre, mais excluant zéro. Je écrit le code suivantNotation et résultat

function upTonArr(n) { 
 
    for (var i = 0, monkeys = []; i <= n; monkeys.push(++i)); 
 
    return monkeys; 
 
}

mais a dû changer pour i < n pour que le test soit réussi.

Quelqu'un peut-il me dire pourquoi, si "n" doit être inclus dans le tableau, la notation ne doit pas être < = n?

Merci d'avance.

+0

La boucle s'exécute si 'i' est inférieur ou égal à' n', si vous supprimez la partie égale, la boucle ne s'exécute que si 'i' est inférieur à' n', ce qui réduit l'itération. – adeneo

+0

Essayez simplement d'évaluer chaque expression dans votre esprit: combien de singes seront créés si je passe 'n = 0'? – Bergi

+0

D'accord. Si je dis que n = 10 alors mon tableau devrait inclure tous les nombres de 1 à 10, correct? c'est pourquoi je pense n <= 10. Les testes ne sont passés que lorsque la notation a dit i

Répondre

2

Vous utilisez un opérateur de préfixe (++ i). Qu'est-ce que cela fait, c'est incrémente la variable avant de l'extraire. Lors de la première exécution, la valeur est 0, mais à cause de l'opérateur de préfixe, 1 est poussé vers le tableau. Si vous aviez i < = n, ce serait pousser (n + 1) comme dernière valeur au tableau.

L'autre version, l'opérateur de suffixe (i ++), va d'abord extraire la variable, puis l'incrémenter après y avoir accédé, donc 0 sera poussé vers le tableau lors de la première exécution.

+0

Merci pour la clarification. –