在阵列的控制台对象中打印

时间:2012-04-06 18:35:27

标签: javascript

您好我一直在尝试使用codeacademy.com学习Javascript,并且我已经完成了一个练习,这个练习似乎没有任何意义,为什么我写的练习。这是我的代码:

 (function(){
    var bob = {
        firstName: "Bob",
        lastName: "Jones",

        phoneNumber: "(650) 777 - 7777",
        email: "bob.jones@example.com"
    };

    var mary = {
        firstName: "Mary",
        lastName: "Johnson",

        phoneNumber: "(650) 888 - 8888",
        email: "mary.johnson@example.com"
    };

    var contacts = [bob, mary];

    var printPerson = function(person){
        console.log(person.firstName + " " + person.lastName);
    }

    var list = function(){
        var i = contacts.length;
        for(var j= 0; j < i ; j++){
            printPerson(contacts[i]);
        }
    };

        list();
})();

当我尝试调用printPerson()函数时,问题出现在list函数中我得到的那个人是未定义的但是如果我写了而不是list()函数:

    printPerson(contacts[0]);
    printPerson(contacts[1]);

一切正常。我在list()函数中做错了什么,它不起作用?

4 个答案:

答案 0 :(得分:4)

var list = function(){
    var i = contacts.length;
    for(var j= 0; j < i ; j++){
        printPerson(contacts[i]);
    }
};

i这是一个常量。如果你更换它:

var list = function(){
    var i = contacts.length;
    for(var j= 0; j < contacts.length ; j++){
        printPerson(contacts[contacts.length]);
    }
};

对于所有数组arrarr[arr.length]将始终未定义。您可能需要contacts[j]

答案 1 :(得分:2)

for(var j= 0; j < i ; j++){
    printPerson(contacts[i]); // this should be contacts[j]
}

答案 2 :(得分:0)

contacts.forEach(function(contact) {
    printPerson(contact);
});

答案 3 :(得分:0)

var bob = {
    firstName: "Bob",
    lastName: "Jones",
    phoneNumber: "(650) 777-7777",
    email: "bob.jones@example.com"
};

var mary = {
    firstName: "mary",
    lastName: "Johnson",
    phoneNumber: "(650) 888 - 8888",
    email: "mary.johnson@example.com"
};


 var contacts=[bob,mary];
 console.log(mary.phoneNumber);