访问数组数组中的属性? (JavaScript)的

时间:2014-10-13 21:24:34

标签: javascript arrays

var person = { firstname: "", lastname: "", email: "" };
var student = Object.create(person);

var i = 0;
var flag = true;

//create array of arrays. similar to a database. Receive unspecified number
//number of inputs from user
while (flag) {
var input = prompt("Please enter fname, lname, and email"); 
//Sample input: John, Doe, abcd@efg.com    

var results = input.split(", ");  

student[i]=({  
firstname: results.shift(),
lastname: results.shift(),
email: results,

});
i++;


console.log(student[i].firstname);//testing code. returns student[i] is undefined
console.log(student[0].firstname);//testing code. returns John.
flag = confirm("Do you want to continue?");
};

当我尝试运行此代码时,我收到错误student[i] is undefined

即使我在代码正上方设置了student[i]的值。 但是,当我尝试输出student[0].firstname时,我会得到John

编辑:即使有了

console.log(student[i].firstname); 

放在i ++前面,它不起作用

6 个答案:

答案 0 :(得分:0)

您在查询数组时递增i然后。因此,当你输入一个新项目时,我们可以说索引0,当你查询结果时,你实际上会查询学生1.在i++;之后向下移动console.log

答案 1 :(得分:0)

看看你做了什么:

student[i]=({  
...
i++;
...
console.log(student[i].firstname);

所以你设置student[i]。然后你增加i,因此它不再是以前的值。然后,您尝试使用该值来访问student的属性,但由于您尚未设置该属性,因此该属性不存在。

您需要重拨您的来电。我想i++应该在块的最后。

答案 2 :(得分:0)

分配student[i]后,请致电i++。这会设置i=1。您尚未将students[1]设置为任何值。

答案 3 :(得分:0)

我相信您要做的是制作一个students数组,然后push新的实例。

var students = [];
var flag = true;

//create array of arrays. similar to a database. Receive unspecified number
//number of inputs from user
while (flag) {
    var input = prompt("Please enter fname, lname, and email");
    //Sample input: John, Doe, abcd@efg.com    

    var results = input.split(", ");

    students.push({
        firstname: results.shift(),
        lastname: results.shift(),
        email: results[0],

    });

    console.log(JSON.stringify(students)); //testing code
    flag = confirm("Do you want to continue?");
};

答案 4 :(得分:0)

i++;以上console.log(student[i].firstname);//testing code. returns student[i] is undefined设置i = 1.

答案 5 :(得分:0)

在记录后移动i ++并更改访问结果的方式

var results = input.split(", ");

        student[i]=({
            firstname: results[0],
            lastname: results[1],
            email: results[2]

        });



        console.log(student[i].firstname);//testing code. returns student[i] is undefined
        console.log(student[0].firstname);//testing code. returns John.
        i++;