所以我正在尝试解决这段代码。它在控制台中打印,现在我试图让它在循环中运行并列出每个人及其细节,同时还使用点表示法。我尝试了各种不同的选择,并搜索网络。我是Javascript的新手,这可能就是为什么我错过了一些相当明显的东西。有人可以帮忙吗?
// jslint devel: true
var student = [
{
name : 'Peter',
course : 'Creative Technologies',
module : 3,
attendence: 79
},
{
name : 'John',
course : 'Art',
module : 2,
attendence : 41
},
{
name : 'Hannah',
course : 'Business',
module : 4,
attendence : 78
},
{
name : 'Greg',
course : 'ICT',
module : 3,
attendence : 93
},
{
name : 'Sam',
course : 'Music',
module : 1,
attendence : 67
},
];
for (prop in student) {
console.log(prop, ': ', student[prop]);
}
function print(message){
document.write(message);
}
for (var i = 0; i < student.length; i++) {
name = student[i][name];
course = student[i][course];
module = student[i][module];
attendence = student[i][attendence];
print();
}
答案 0 :(得分:1)
你需要在你的循环中使用括号表示法,你需要使用字符串键(prop
),并且你需要点符号和文字在你正在写字面的地方(student[i].course
)或者如果要在那里使用括号表示法,则需要将名称放在引号(student[i]["course"]
)中。当您执行student[i][course]
时,您正在说&#34;查找course
变量的值并将其用作属性名称,&#34;但是那时你不能在范围内有任何course
变量。
使用点表示法(并将内容传递给print
):
// jslint devel: true
var student = [
{
name : 'Peter',
course : 'Creative Technologies',
module : 3,
attendence: 79
},
{
name : 'John',
course : 'Art',
module : 2,
attendence : 41
},
{
name : 'Hannah',
course : 'Business',
module : 4,
attendence : 78
},
{
name : 'Greg',
course : 'ICT',
module : 3,
attendence : 93
},
{
name : 'Sam',
course : 'Music',
module : 1,
attendence : 67
},
];
/* Leaving this out to keep the output simple
for (prop in student) {
console.log(prop, ': ', student[prop]);
}
*/
function print(message){
console.log(message);
}
for (var i = 0; i < student.length; i++) {
var name = student[i].name; // ***
var course = student[i].course; // ***
var module = student[i].module; // ***
var attendence = student[i].attendence; // ***
print("Student #" + i + ":");
print(" name : " + name);
print(" course : " + course);
print(" module : " + module);
print(" attendence: " + attendence);
}
&#13;
旁注:单词&#34;参加 a nce&#34;最后有一个a
,而不是e
。