Je veux parcourir les objets contenus dans un tableau et modifier les propriétés de chacun. Si je fais ceci:
for (var j = 0; j < myArray.length; j++){
console.log(myArray[j]);
}
La console devrait afficher tous les objets du tableau, non? Mais en fait, il n'affiche que le premier objet. si je console le journal du tableau en dehors de la boucle, tous les objets apparaissent donc il y en a certainement plus.
Quoi qu'il en soit, voici le problème suivant. Comment accéder, par exemple à Object1.x dans le tableau, en utilisant la boucle?
for (var j = 0; j < myArray.length; j++){
console.log(myArray[j.x]);
}
Cela renvoie «indéfini». Là encore, le journal de la console en dehors de la boucle me dit que les objets ont tous des valeurs pour "x". Comment accéder à ces propriétés dans la boucle?
On m'a recommandé ailleurs d'utiliser des tableaux séparés pour chacune des propriétés, mais je veux m'assurer que j'ai d'abord épuisé cette avenue.
Je vous remercie!
la source
j
est un nombre. Vous l'avez défini en haut de votre boucle.myArray
- être n'est-ce pas vraiment juste un tableau après tout ??#forEach
travaux. Mais la question concernait la boucle for.Réponses:
Utilisez forEach c'est une fonction de tableau intégrée.
Array.forEach()
:la source
forEach
ne soit pas pris en charge dans IE 9. Ne me blâmez pas! Le produit de mon employeur est là pour cela!yourArray
quelque chose commedocument.getElementsByClassName
ça, ce serait une HTMLCollection, pas un tableau. Alors cette question pourrait être utile.forEach
bloque et ne prend pas en chargeawait
. Lafor...of
boucle le fera.Quelques cas d'utilisation de bouclage à travers un tableau de la manière de la programmation fonctionnelle en JavaScript:
1. Faites une boucle sur un tableau
Remarque: Array.prototype.forEach () n'est pas un moyen fonctionnel à proprement parler, car la fonction qu'il prend comme paramètre d'entrée n'est pas censée renvoyer une valeur, qui ne peut donc pas être considérée comme une fonction pure.
2. Vérifiez si l'un des éléments d'un tableau réussit un test
3. Transformez-vous en un nouveau tableau
Remarque: La méthode map () crée un nouveau tableau avec les résultats de l'appel d'une fonction fournie sur chaque élément du tableau appelant.
4. Faites la somme d'une propriété particulière et calculez sa moyenne
5. Créez un nouveau tableau basé sur l'original mais sans le modifier
6. Comptez le nombre de chaque catégorie
7. Récupérer un sous-ensemble d'un tableau en fonction de critères particuliers
Remarque: La méthode filter () crée un nouveau tableau avec tous les éléments qui passent le test implémenté par la fonction fournie.
8. Trier un tableau
9. Rechercher un élément dans un tableau
La méthode Array.prototype.find () renvoie la valeur du premier élément du tableau qui satisfait la fonction de test fournie.
Références
la source
const people = [ {name: "john", age:23}, {name: "john", age:43}, {name: "jim", age:101}, {name: "bob", age:67} ]; const sortByAge = people.map(p => { console.log(p.name) return p }).sort(function (p1, p2) { return p1.age - p2.age; }); console.log(sortByAge);
Vous pouvez utiliser une boucle for..of pour boucler sur un tableau d'objets.
L'une des meilleures choses à propos des
for..of
boucles est qu'elles peuvent itérer sur plus que de simples tableaux. Vous pouvez parcourir n'importe quel type d'itérable, y compris les cartes et les objets. Assurez-vous d'utiliser un transpilateur ou quelque chose comme TypeScript si vous avez besoin de prendre en charge des navigateurs plus anciens.Si vous souhaitez parcourir une carte, la syntaxe est en grande partie la même que celle ci-dessus, sauf qu'elle gère à la fois la clé et la valeur.
J'utilise des
for..of
boucles pour à peu près tous les types d'itérations que je fais en Javascript. De plus, l'une des choses les plus intéressantes est qu'ils fonctionnent également avec async / await.la source
la source
Voici un exemple sur la façon dont vous pouvez le faire :)
la source
track
propriété pour chaque élément et l'affecteriez-vous à une variable à utiliser ou à interpoler dans une autre partie du code?Faire une boucle à travers un tableau d'objets est une fonctionnalité assez fondamentale. C'est ce qui fonctionne pour moi.
la source
myArray[j.x]
est logiquement incorrect.Utilisez
(myArray[j].x);
plutôtla source
C'est vraiment simple d'utiliser la méthode forEach depuis ES5 +. Vous pouvez modifier directement chaque propriété de chaque objet de votre tableau.
Si vous souhaitez accéder à une propriété spécifique sur chaque objet:
la source
Voici une autre façon d'itérer dans un tableau d'objets (vous devez inclure la bibliothèque jQuery dans votre document pour ceux-ci).
la source
$.each
méthode.Cela fonctionnerait. Tableau complet en boucle (yourArray). Ensuite, parcourez les propriétés directes de chaque objet (eachObj).
la source
Itération d'objet de tableau, en utilisant jQuery, (utilisez le deuxième paramètre pour imprimer la chaîne).
la source
C'est l'une des façons dont j'ai pu y parvenir.
la source
La réponse acceptée utilise la fonction normale. Donc, poster le même code avec une légère modification en utilisant la fonction de flèche sur forEach
Également dans $ .each, vous pouvez utiliser la fonction de flèche comme ci-dessous
la source
Faites attention aux tiques arrière (`)
la source
Cela pourrait aider quelqu'un. C'est peut-être un bogue dans Node.
Cela ne fonctionne pas:
Mais cela fonctionne ...
Cela fonctionne aussi ...
MAIS inverser simplement l'ordre ne fonctionne pas. Je suppose qu'il y a une sorte d'optimisation interne ici qui brise Node.
L'erreur indique que le tableau n'est pas défini, mais ce n'est pas le cas: - / Node v11.15.0
la source