Voici une belle forme d'une boucle que j'utilise souvent. Vous créez la variable itérée à partir de l'instruction for et vous n'avez pas besoin de vérifier la propriété length, ce qui peut être coûteux surtout lors de l'itération à travers un NodeList. Cependant, vous devez faire attention, vous ne pouvez pas l'utiliser si l'une des valeurs du tableau pourrait être "fausse". En pratique, je ne l'utilise que lorsque je parcours un tableau d'objets qui ne contient pas de valeurs nulles (comme un NodeList). Mais j'adore son sucre syntaxique.
var list = [{a:1,b:2}, {a:3,b:5}, {a:8,b:2}, {a:4,b:1}, {a:0,b:8}];
for (var i=0, item; item = list[i]; i++) {
// Regardez, pas besoin de faire list[i] dans le corps de la boucle
console.log("Boucle: index ", i, "élément" + item);
}
Notez que cela peut également être utilisé pour boucler en arrière.
var list = [{a:1,b:2}, {a:3,b:5}, {a:8,b:2}, {a:4,b:1}, {a:0,b:8}];
for (var i = list.length - 1, item; item = list[i]; i--) {
console.log("Boucle: index ", i, "élément", item);
}
Mise à jour ES6
for...of
peut être utilisé pour une syntaxe plus propre. Disponible depuis ES6
const a = ["a", "b", "c"];
for (const [index, element] of a.entries()) {
console.log({index, element});
}
// Si vous n'avez pas besoin de l'index
for (const element of a) {
console.log({element});
}
7 votes
Ce serait génial si vous marquiez l'une des réponses comme étant répondue. C'est après tout l'un des principaux points de SO :)
1 votes
Ce serait également génial si vous repreniez une réponse acceptée maintenant que celle acceptée est sans valeur >:) . . . d'un autre côté, c'est vraiment ancien donc je m'en fiche vraiment.