Попытка перечислить элементы, используя циклическую и точечную нотацию в Javascript

#javascript #loops

#javascript #циклы

Вопрос:

Итак, я пытаюсь проработать этот фрагмент кода. Он печатается в консоли, и теперь я пытаюсь заставить его проходить через цикл и перечислять каждого пользователя и их данные, также используя точечную нотацию. Я пробовал разные варианты и просматривал веб. Я новичок в Javascript, и, возможно, поэтому я пропустил что-то довольно очевидное. Кто-нибудь может помочь, пожалуйста?

 // jslint devel: true 
var student = [
  { 
   name : 'Peter',
   course : 'Creative Technologies',
   module : 3,
   attendence: 79         
  },

  { 
   name : 'John',
   course : 'Art',
   module : 2,
   attendence : 41         
  }, 

  { 
   name : 'Hannah',
   course : 'Business',
   module : 4,
   attendence : 78        
  },   


  { 
   name : 'Greg',
   course : 'ICT',
   module : 3,
   attendence : 93         
  },   

  { 
   name : 'Sam',
   course : 'Music',
   module : 1,
   attendence : 67         
  },   
];


for (prop in student) {
    console.log(prop, ': ', student[prop]);
}

function print(message){
    document.write(message);
}

 for (var i = 0; i < student.length; i  ) {
    name = student[i][name];
    course = student[i][course];
    module = student[i][module];
    attendence = student[i][attendence];
    print();
}
  

Комментарии:

1. Вы вызываете print(), но вы ничего не передаете ему, но он ожидает сообщение

2. Также вы не можете получить доступ к подобным свойствам, student[i][name] поскольку name они не определены. Возможно, вы имели в виду это? student[i]["name"] ? И в качестве совета не используйте document.write.

3. Спасибо за вашу помощь, мужчины, цените это!

Ответ №1:

Вам нужна нотация в скобках в вашем цикле, где вы используете строковый ключ ( prop ), и вы хотите либо точечную нотацию, либо литерал в тех местах, где вы пишете имя буквально ( student[i].course ), либо, если вы хотите использовать там нотацию в скобках, вам нужно заключить имя в кавычки ( student[i]["course"] ). Когда вы это делаете student[i][course] , вы говорите «Найдите значение course переменной и используйте его в качестве имени свойства», но на данный момент у вас нет никакой course переменной в области видимости.

С точечной нотацией (и передачей чего-либо print ):

 // jslint devel: true 
var student = [
  { 
   name : 'Peter',
   course : 'Creative Technologies',
   module : 3,
   attendence: 79         
  },

  { 
   name : 'John',
   course : 'Art',
   module : 2,
   attendence : 41         
  }, 

  { 
   name : 'Hannah',
   course : 'Business',
   module : 4,
   attendence : 78        
  },   


  { 
   name : 'Greg',
   course : 'ICT',
   module : 3,
   attendence : 93         
  },   

  { 
   name : 'Sam',
   course : 'Music',
   module : 1,
   attendence : 67         
  },   
];

/* Leaving this out to keep the output simple
for (prop in student) {
    console.log(prop, ': ', student[prop]);
}
*/
function print(message){
    console.log(message);
}

 for (var i = 0; i < student.length; i  ) {
    var name = student[i].name;              // ***
    var course = student[i].course;          // ***
    var module = student[i].module;          // ***
    var attendence = student[i].attendence;  // ***
    print("Student #"   i   ":");
    print("  name      : "   name);
    print("  course    : "   course);
    print("  module    : "   module);
    print("  attendence: "   attendence);
}  


Примечание: слово «посещатьnce» имеет a в конце, а не e .

Комментарии:

1. Ти Джей, спасибо за вашу помощь — теперь я разобрался! 🙂