Utiliser la for...in
boucle pour un tableau n'est pas faux, bien que je devine pourquoi quelqu'un vous a dit que:
1.) Il existe déjà une fonction ou méthode d'ordre supérieur, qui a cet objectif pour un tableau, mais a plus de fonctionnalités et une syntaxe plus légère, appelée «forEach»: Array.prototype.forEach(function(element, index, array) {} );
2.) Les tableaux ont toujours une longueur, mais for...in
et forEach
ne pas exécuter une fonction pour une valeur qui est'undefined'
, seulement pour les indices qui ont une valeur définie. Donc, si vous n'affectez qu'une seule valeur, ces boucles n'exécuteront une fonction qu'une seule fois, mais comme un tableau est énuméré, il aura toujours une longueur jusqu'à l'index le plus élevé qui a une valeur définie, mais cette longueur peut passer inaperçue lors de l'utilisation de ces boucles.
3.) La norme for loop exécutera une fonction autant de fois que vous le définissez dans les paramètres, et comme un tableau est numéroté, il est plus logique de définir combien de fois vous voulez exécuter une fonction. Contrairement aux autres boucles, la boucle for peut alors exécuter une fonction pour chaque index du tableau, que la valeur soit définie ou non.
En substance, vous pouvez utiliser n'importe quelle boucle, mais vous devez vous rappeler exactement comment ils fonctionnent. Comprendre les conditions dans lesquelles les différentes boucles sont réitérées, leurs fonctionnalités distinctes et se rendre compte qu'elles seront plus ou moins appropriées pour différents scénarios.
En outre, il peut être considéré comme une meilleure pratique d'utiliser la forEach
méthode que la for...in
boucle en général, car elle est plus facile à écrire et a plus de fonctionnalités, vous pouvez donc avoir l'habitude d'utiliser uniquement cette méthode et la norme pour, mais votre appel.
Voir ci-dessous que les deux premières boucles n'exécutent les instructions console.log qu'une seule fois, tandis que la norme for loop exécute la fonction autant de fois que spécifié, dans ce cas, array.length = 6.
var arr = [];
arr[5] = 'F';
for (var index in arr) {
console.log(index);
console.log(arr[index]);
console.log(arr)
}
// 5
// 'F'
// => (6) [undefined x 5, 6]
arr.forEach(function(element, index, arr) {
console.log(index);
console.log(element);
console.log(arr);
});
// 5
// 'F'
// => Array (6) [undefined x 5, 6]
for (var index = 0; index < arr.length; index++) {
console.log(index);
console.log(arr[index]);
console.log(arr);
};
// 0
// undefined
// => Array (6) [undefined x 5, 6]
// 1
// undefined
// => Array (6) [undefined x 5, 6]
// 2
// undefined
// => Array (6) [undefined x 5, 6]
// 3
// undefined
// => Array (6) [undefined x 5, 6]
// 4
// undefined
// => Array (6) [undefined x 5, 6]
// 5
// 'F'
// => Array (6) [undefined x 5, 6]