Disons que j’ai
myArray = ['item1', 'item2']
j’ai essayé
for (var item in myArray) {console.log(item)}
Il imprime 0 1
Ce que je souhaite est d’avoir item1 item2
Existe-t-il une autre syntaxe qui fonctionne sans utiliser
for (var i = 0; i < myArray.length; i++)
Vous pouvez utiliser Array.forEach
var myArray = ['1','2',3,4] myArray.forEach(function(value){ console.log(value); });
Ce que vous voulez probablement, c’est for... of
, une construction relativement nouvelle construite dans le but express d’énumérer les valeurs des objects itérables:
var myArray = ["a","b","c","d"]; for (let item of myArray) { console.log(item); }
Pour imprimer ‘item1’, ‘item2’, ce code fonctionnerait.
var myarray = ['hello', ' hello again']; for (var item in myarray) { console.log(myarray[item]) }
Dans ES5, il n’existe aucun moyen efficace d’itérer sur un tableau fragmenté sans utiliser la propriété length. Dans ES6, vous pouvez utiliser for...of
. Prenez ces exemples:
'use ssortingct'; var arr = ['one', 'two', undefined, 3, 4], output; arr[6] = 'five'; output = ''; arr.forEach(function (val) { output += val + ' '; }); console.log(output); output = ''; for (var i = 0; i < arr.length; i++) { output += arr[i] + ' '; } console.log(output); output = ''; for (var val of arr) { output += val + ' '; }; console.log(output);
Utilisez la fonction Javascript intégrée appelée map. .map () fera exactement ce que vous cherchez!
Utilisez des iterators …
var myarray = ['hello', ' hello again']; processArray(myarray[Symbol.iterator](), () => { console.log('all done') }) function processArray(iter, cb) { var curr = iter.next() if(curr.done) return cb() console.log(curr.value) processArray(iter, cb) }
Vue d’ensemble plus détaillée: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols