访问数组中的属性?(Javascript)
Accessing Properties in Array of Arrays? (Javascript)
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++;
相关文章:
- offsetLeft Javascript属性需要更多时间
- JavaScript 属性继承
- Javascript 属性名称上的正则表达式
- 如何更改对 javascript 属性的调用的范围/上下文
- 使用相同的名称访问Javascript属性
- 为什么某些Javascript属性没有在调试器中以交互方式显示
- 隐藏元素:Javascript属性和CSS样式之间的区别
- 用函数重写Javascript属性
- Javascript属性访问速度:var.properties与var[“属性”]的区别
- 在读取之前设置未定义的 javascript 属性
- 使用字符串选择器设置javascript属性
- 按名称将文本替换为 JavaScript 属性的内容
- 来自变量的 Javascript 属性
- 从 javascript 属性和值中删除
- Javascript:属性描述符和内置属性属性之间的关系是什么
- JavaScript 属性重复 [点与括号]....
- Jquery 属性代码到 Javascript 属性代码
- JavaScript属性存储它
- 带有 setter 方法的 JavaScript 属性不是真正的属性
- 使用 getter/setter 覆盖 javascript 属性,同时仍访问底层属性