我正在创建一个简单的程序,它将打印我的对象数组名的名字的名字和姓氏。当我运行程序时,它正确打印所有名称,但也指出存在以下错误:
TypeError:无法读取属性' first_name'未定义的
这是我的代码:
var students = [
{first_name: 'Michael', last_name : 'Jordan'},
{first_name: 'John', last_name : 'Rosales'},
{first_name: 'Mark', last_name : 'Guillen'},
{first_name: 'KB', last_name : 'Tonel'}
]
for (var i = 0; i <= 4; i++) {
console.log(students[i].first_name + " " + students[i].last_name);
};
我的for循环中是否有错误,我没有看到?
答案 0 :(得分:1)
你的for循环从索引(0-4)迭代5次。你只有4个名字。所以它试图读取第5个元素并找到一个未定义的元素。
将您的for循环更改为:
for (var i = 0; i <= 3; i++) {
console.log(students[i].first_name + " " + students[i].last_name);
};
答案 1 :(得分:0)
使用i&lt; 4,而不是&lt; =。你正在打一个未定义的数组学生[4]。更好的做法是为数组中的项目数运行for循环。例如for(var i = 0; i&lt; students.length; i ++)
答案 2 :(得分:0)
永远记住数组总是从0开始它的索引所以在你的情况下它将像i = 0一样开始并且你已经调整了你的循环直到i <= 4它将在i = 4时指向null所以它将生成错误,以便您可以接近下面列出的两个
中的任何一个将你的循环结束为i = 3
for (var i = 0; i <= 3; i++) {
console.log(students[i].first_name + " " + students[i].last_name);};
或者从i = 1开始循环到i = 4
for (var i = 1; i <= 4; i++) {
console.log(students[i].first_name + " " + students[i].last_name);
};
唯一重要的是你的for循环迭代的次数,并且它不会超出你阵列的长度。
答案 3 :(得分:0)
如果你想通过一个数组,你也可以像这样使用forEach:
students.forEach(function(student){
console.log(student.first_name + " " + student.last_name);
});