对于使用对象数组的循环错误

时间:2017-08-03 18:09:35

标签: javascript arrays object for-loop

我正在创建一个简单的程序,它将打印我的对象数组名的名字的名字和姓氏。当我运行程序时,它正确打印所有名称,但也指出存在以下错误:

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循环中是否有错误,我没有看到?

4 个答案:

答案 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);
});