2 votes

Itération dans un objet JavaScript

Vous avez des difficultés à accéder aux objets. Ils s'impriment comme étant indéfinis. Aidez-moi ! J'ai besoin du code pour imprimer les noms des étudiants.

let students = [
        {name: 'Remy', cohort: 'Jan'},
        {name: 'Genevieve', cohort: 'March'},
        {name: 'Chuck', cohort: 'Jan'},
        {name: 'Osmund', cohort: 'June'},
        {name: 'Nikki', cohort: 'June'},
        {name: 'Boris', cohort: 'June'}
    ];

    function objPrint() {
        for (var i=0; i<students.length; i++) {
           console.log("Name: " + students[i][0] + " Cohort: " + students[i][1])
        }
    }

3voto

Sushanth -- Points 34703

Vous accédez aux éléments comme s'il s'agissait d'un tableau. Mais en réalité, c'est un tableau d'objets.

Le niveau supérieur, obtient déjà l'élément qui est l'élément courant, il suffit d'accéder aux clés avec la notation par points ou par parenthèses pour obtenir la valeur.

let students = [
        {name: 'Remy', cohort: 'Jan'},
        {name: 'Genevieve', cohort: 'March'},
        {name: 'Chuck', cohort: 'Jan'},
        {name: 'Osmund', cohort: 'June'},
        {name: 'Nikki', cohort: 'June'},
        {name: 'Boris', cohort: 'June'}
    ];

    students.forEach((item) => {
       //console.log(`Name - ${item.name} :: Cohort - ${item.cohort}`);
       console.log('Name - ' + item.name + " :: Cohort - " + item.cohort );
    });

3voto

NAVIN Points 1849

Faites quelque chose comme ça :

let students = [
    {name: 'Remy', cohort: 'Jan'},
    {name: 'Genevieve', cohort: 'March'},
    {name: 'Chuck', cohort: 'Jan'},
    {name: 'Osmund', cohort: 'June'},
    {name: 'Nikki', cohort: 'June'},
    {name: 'Boris', cohort: 'June'}
];

function objPrint() {
    for (var i=0; i<students.length; i++) {
       // Can also use students[i]['name'] , students[i]['cohort']
       // using lodash.js _.get(students, [i, 'name'], 'default value');
       // using new destructuring let {name, cohort} = students[i] then console.log("name: "+ name + " Cohort: "+cohort);
       console.log("Name: " + students[i].name + " Cohort: " + students[i].cohort);
    }
}

1voto

Vous devez appeler la clé/attribut comme ceci : students[i].name et ensuite la méthode objPrint() pour imprimer les valeurs.

let students = [
        {name: 'Remy', cohort: 'Jan'},
        {name: 'Genevieve', cohort: 'March'},
        {name: 'Chuck', cohort: 'Jan'},
        {name: 'Osmund', cohort: 'June'},
        {name: 'Nikki', cohort: 'June'},
        {name: 'Boris', cohort: 'June'}
    ];

    function objPrint() {
        for (var i=0; i<students.length; i++) {
           console.log("Name: " + students[i].name + " Cohort: " + students[i].cohort)
        }
    }

    objPrint();

0voto

Frost Points 393

Les propriétés des objets sont accessibles par la notation du point plutôt que par une parenthèse avec un nombre. Vous devez donc procéder comme suit

students[i].name

0voto

Amir Points 65

Essayez pour..de :

let students = [
    {name: 'Remy', cohort: 'Jan'},
    {name: 'Genevieve', cohort: 'March'},
    {name: 'Chuck', cohort: 'Jan'},
    {name: 'Osmund', cohort: 'June'},
    {name: 'Nikki', cohort: 'June'},
    {name: 'Boris', cohort: 'June'}
]
// returns an object as a student
for(let student of students) {
 console.log(`Name: ${student.name} Cohort: ${student.cohort}`)
}

donc vous avez accès aux attributs de l'objet et vous pouvez faire ce que vous voulez.

avantages de cette approche

  • contrairement à .foreach() il fonctionne avec break, continue, et return
  • il évite tous les écueils du for-in (travailler avec des index et non des objets)

et aussi utilisez les backticks pour éviter la vieille méthode de concaténation des chaînes - c'est plus joli :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X