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

Accessing Properties in Array of Arrays? (Javascript)

本文关键字:Javascript 属性 数组 访问      更新时间:2023-09-26
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++ 前面它不起作用

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

看看你做了什么:

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

所以你设置student[i].然后你递增i,所以它的值不再与以前相同。然后,您尝试使用该值访问 student 的属性,该属性不存在,因为您尚未设置它。

您需要重新排序您的呼叫。我想i++应该在块的最后。

分配student[i]后,调用i++ 。这设置i=1 .您尚未将students[1]设置为任何值。

我相信您要做的是创建一个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?");
};

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

在日志记录后移动 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++;