Comment parcourir un tableau contenant des objets et d'accéder à leurs propriétés
Je veux faire défiler 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 dans le tableau, à droite? Mais en fait, il n'affiche que le premier objet. si je journal de la console du tableau à l'extérieur de la boucle, tous les objets n'apparaissent donc il y a certainement plus là.
De toute façon, voici le problème suivant. Comment puis-je accéder, par exemple l'Objet1.x dans le tableau, à l'aide de la boucle?
for (var j = 0; j < myArray.length; j++){
console.log(myArray[j.x]);
}
Retourne "undefined." De nouveau le journal de la console à l'extérieur de la boucle me dit que les objets ont tous des valeurs de "x". Comment puis-je accéder à ces propriétés dans la boucle?
J'ai été recommandé d'ailleurs à utiliser des tableaux distincts pour chacune des propriétés, mais je veux m'assurer que j'ai épuisé cette voie d'abord.
Merci!
- Pouvez-vous poster un échantillon de votre tableau? Le premier extrait de code semble correct.
j
est un nombre. Vous avez défini dans la partie supérieure de votre boucle.- Peut-être
myArray
n'est pas vraiment juste un tableau après tout?? - nous avons besoin de plus d'informations sur la façon montableau est construit
- Avec toutes les réponses ci-après et d'avoir accepté de répondre à n'explique pas pourquoi le problème se produit et comment le résoudre avec une boucle for.
#forEach
œuvres. Mais la question était de savoir pour la boucle. - La simple erreur de syntaxe qui est la cause du problème dans la deuxième partie de la question d'origine est appelé dans cette réponse (
myArray[j.x]
devrait êtremyArray[j].x
). Régulièrementfor
boucle fonctionne bien, si la syntaxe est correcte.
Vous devez vous connecter pour publier un commentaire.
Utiliser forEach son intégré dans la fonction array.
Array.forEach()
:forEach
n'est pas pris en charge dans IE 9. Ne me blâmez pas! Mon employeur est produit donne à l'appui!yourArray
de quelque chose commedocument.getElementsByClassName
qui serait une HTMLCollection, pas un tableau. Alors cette question pourrait être utile.Certains cas d'utilisation d'une boucle dans un tableau dans le de la programmation fonctionnelle façon en JavaScript:
1. Juste une boucle dans un tableau
Note: Tableau.le prototype.forEach() n'est pas une manière fonctionnelle à proprement parler, que la fonction prend comme paramètre d'entrée n'est pas censé renvoyer une valeur, qui ne peut donc pas être considérée comme une pure fonction.
2. Vérifier si l'un des éléments dans un tableau à passer un test
3. De se transformer en un nouveau tableau
Remarque: La méthode map() crée un nouveau tableau avec les résultats de l'appel d'une fonction sur chaque élément de l'appel de la matrice.
4. Résumer une propriété particulière, et calculer sa moyenne
5. Créer un nouveau tableau à partir de l'original, mais sans le modifier
6. Compter le nombre de chaque catégorie
7. Extraire un sous-ensemble d'un tableau basé sur des critères spécifiques
Remarque: La méthode filter() crée un nouveau tableau avec tous les éléments qui passent le test mis en œuvre par la fonction fournie.
8. Le tri d'un tableau
9. Trouver un élément dans un tableau
Le Tableau.le prototype.méthode find() retourne la valeur du premier élément du tableau qui satisfait à la condition de test de la fonction.
Références
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);
Dans ECMAScript 2015 aka ES6, vous pouvez utiliser un pour de la boucle.. faire une boucle sur un tableau d'objets.
Au moment de la publication de cette réponse, le support est assez inexistante pour Internet Explorer, mais grâce à l'utilisation d'un transpiler comme Traceur ou Babel, vous pouvez utiliser les nouvelles fonctions Javascript comme ça, sans vraiment avoir à vous soucier de ce que les navigateurs prennent en charge ce.
Voici un exemple sur comment vous pouvez le faire 🙂
JS:
track
propriété pour chaque élément et de l'affecter à une variable d'utiliser ou d'interpoler dans une autre partie de code?Une boucle dans un tableau d'objets est une question assez fondamentale de la fonctionnalité. C'est ce qui fonctionne pour moi.
JS:
myArray[j.x]
est logiquement incorrecte.Utilisation
(myArray[j].x);
au lieuC'est vraiment simple à l'aide de la méthode forEach depuis ES5+. Vous pouvez modifier directement chacune des propriétés de chaque objet dans votre tableau.
Si vous souhaitez accéder à une propriété spécifique sur chaque objet:
Voici une autre façon de parcourir en un tableau d'objets (vous devez inclure la librairie jQuery dans votre document pour ces).
$.each
méthode.Ce serait le travail. Boucle complète array(yourArray) . Puis la boucle directe des propriétés de chaque objet (eachObj) .
Tableau itération d'un objet, à l'aide de jQuery,
(utiliser le deuxième paramètre d'impression de la chaîne).
Accepté réponse utilise une fonction normale. Alors les poster le même code avec une légère modification à l'aide de la flèche de la fonction forEach
Également en $.chaque, vous pouvez utiliser la flèche de la fonction comme ci-dessous
JS:
C'est l'une des façons comment j'ai été capable de l'atteindre.
JS:
Être prudent sur le dos des Tiques (`)