Итерация по объекту JavaScript - PullRequest
0 голосов
/ 01 октября 2018

Проблемы с доступом к объектам.Они печатаются как неопределенные.Помогите!Мне нужен код для печати имен учеников.

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])
        }
    }

Ответы [ 6 ]

0 голосов
/ 01 октября 2018

Попробуйте это:

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 sobjPrint() {
  for (var i in students) {

    if (students.hasOwnProperty(i)) {
       console.log("Name: " + students[i].name + " Cohort: " + students[i].cohort)
    }
  }
}
0 голосов
/ 01 октября 2018

Попробуйте ...

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}`)
}
   
поэтому у вас есть доступ к атрибутам объекта, и вы можете делать все, что угодно.

преимущества этого подхода

  • в отличие от .foreach() он работает с разрывом,продолжайте и возвращайте
  • , это позволяет избежать всех ловушек for-in (работа с индексами, а не объектами)

, а также .. использовать обратные ссылки, чтобы избежать старомодного способа строкиконкатенация - выглядит лучше :)

0 голосов
/ 01 октября 2018

Сделайте что-то вроде этого:

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);
    }
}
0 голосов
/ 01 октября 2018

Свойства объектов доступны по точечной записи, а не по скобкам с номером.Таким образом, вы должны сделать это так

students[i].name
0 голосов
/ 01 октября 2018

Вам необходимо вызвать ключ / атрибут следующим образом: students[i].name, а затем метод objPrint() для печати значений.

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();
0 голосов
/ 01 октября 2018

Вы получаете доступ к элементам, как если бы это был массив.Но на самом деле это массив объектов.

Верхний уровень уже получает элемент, являющийся текущим элементом, просто получите ключи с точечной или скобочной нотацией, чтобы получить значение.

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 );
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...