我试图搞乱 javascript,我创建了一个多维数组:
var students = [ [['David'], [80]], [['Vinoth'], [77]], [['Goren'],[55]] ];
然后我创建了一个 if 语句来测试学生的成绩是否是 F 到 A。
for (var i = 0; i < students.length; i++) {
for (var j = 1; j < students.length; j++) {
document.write(students[i][j] + "<br/>");
if (students[i][j] < 60) {
document.write(students[i][j] + " is Grade : F");
} else if (students[i][j] < 70) {
document.write(students[i][j] + " is Grade : D");
} else if (students[i][j] < 80) {
document.write(students[i][j] + " is Grade : C");
} else if (students[i][j] < 90) {
document.write(students[i][j] + " is Grade : B");
} else if (students[i][j] < 100) {
document.write(students[i][j] + " is Grade : A");
}
}
}
为了输出学生的姓名和成绩,我什至创建了三个无效的 for 循环。
我想知道我怎样才能实现这个输出:
David's grade is 80 and is C Grade.
Vinoth's grade is 77 and is C Grade.
Goren's grade is 55 and is F Grade.
知道我的代码缺少什么吗?
最佳答案
其他答案建议简化数组结构。如果你真的想使用额外的嵌套,你需要做一个额外的索引级别。但是你不需要嵌套循环,因为它仍然只是一个线性结构。
for (var i = 0; i < students.length; i++) {
var student = students[i][0][0];
var score = students[i][1][0];
var grade;
if (score < 60) {
grade = "F";
} else if (score < 70) {
grade = "D";
} else if (score < 80) {
grade = "C";
} else if (score < 90) {
grade = "B";
} else if (score < 100) {
grade = "A";
}
document.write(student + "'s score is " + score + ' and is Grade ' + grade + '<br>');
}
此外,如果您期望得分为 80
生成 C
等级而不是 B
, 你应该使用 <=
而不是 <
在比较中。
作为一般规则,我建议对异构数据使用对象而不是数组,因此您的数组应该是这样的:
var students = [ {
name: 'David',
score: 80
}, {
name: 'Vinoth',
score: 77
}, {
name: 'Goren',
score: 55
}];
然后你使用students[i].name
和 students[i].score
, 这更容易理解。
我们的想法是,您使用数组来收集所有相同类型的事物,并使用对象来收集关于某个事物的相关信息。
关于Javascript 循环数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42686006/