带有while循环的JavaScript数组

带有while循环的JavaScript数组,javascript,arrays,Javascript,Arrays,在这段代码中,它应该找到“var dob”的年龄,然后通过数组循环找到学生的分数 有人告诉我,我有正确的代码来查找此人的年龄。 我也有合适的数组。我的问题似乎在我的while循环中 我在while循环中的语法有错误 <script language="javascript" type="text/javascript"> var dob = '20120810'; var year = Number(dob.substr(0, 4));

在这段代码中,它应该找到“var dob”的年龄,然后通过数组循环找到学生的分数

有人告诉我,我有正确的代码来查找此人的年龄。 我也有合适的数组。我的问题似乎在我的while循环中

我在while循环中的语法有错误

    <script language="javascript" type="text/javascript">

        var dob = '20120810';
        var year = Number(dob.substr(0, 4));
        var month = Number(dob.substr(4, 2)) - 1;
        var day = Number(dob.substr(6, 2));
        var today = new Date();
        var age = today.getFullYear() - year;
        if (today.getMonth() < month || (today.getMonth() == month && today.getDate() < day)) {
      age--;
    }
    //document.write("You are " + (age + 1) + " Years old"+"<br>");

    var grade = [
        [6,'Grade 1'],
        [7,'Grade 2'],
        [8,'Grade 3'],
        [9,'Grade 4'],
        [10,'Grade 5'],
        [11,'Grade 6'],
        ];

    while (var age = 0; age < grade; age++){
          document.write(grade[age]);
    }


    </script>

var dob='20120810';
风险年=数量(多个月的子项(0,4));
变量月=数量(月数(4,2))-1;
var日=数量(出生日期(6,2));
var today=新日期();
var age=today.getFullYear()-year;
if(今天.getMonth()”;
风险等级=[
[6,“一级”],
[7,“二级”],
[8,'三级'],
[9,“四级”],
[10,'5级]],
[11,'6级]],
];
而(变量年龄=0;年龄<年级;年龄++){
写作(年级[年龄]);
}

您的一些错误是
1.您正在将(int)年龄与(数组)等级进行比较 最好的方法是
age

2.
grade
数组的索引是从0到5,即
grade[0]==[6,'grade 1']
,这意味着如果年龄大于5,就不会有结果。

另一种方法是,如果你真的想打印出与年龄相对应的分数

    // age = 7;
    let yourGrade = grade.find(e => {
        return e[0] == age;
    });
    // console.log(yourGrade); // [7, 'Grade 2']
    // console.log(yourGrade ? yourGrade[1] : "You’re either too young or too old");
    // Grade 2
上面的代码尝试查看您的(数组)成绩,并返回第一个项目等于计算年龄的值的第一次出现。

实现这一点的方法有很多。
编辑
或者,如果您对
while
循环很挑剔,可以执行以下操作:

    //age = 7;
    let yourGrade;
    let i = grade.length;
    while(i––) {
        if (grade[i][0] == age) {
            yourGrade = grade[i];
            break;
        }
    }
    console.log(yourGrade);
    //[7,'Grade 2']
    //try with age = 5 //undefined

您的一些错误是
1.您正在将(int)年龄与(数组)等级进行比较 最好的方法是
age

2.
grade
数组的索引是从0到5,即
grade[0]==[6,'grade 1']
,这意味着如果年龄大于5,就不会有结果。

另一种方法是,如果你真的想打印出与年龄相对应的分数

    // age = 7;
    let yourGrade = grade.find(e => {
        return e[0] == age;
    });
    // console.log(yourGrade); // [7, 'Grade 2']
    // console.log(yourGrade ? yourGrade[1] : "You’re either too young or too old");
    // Grade 2
上面的代码尝试查看您的(数组)成绩,并返回第一个项目等于计算年龄的值的第一次出现。

实现这一点的方法有很多。
编辑
或者,如果您对
while
循环很挑剔,可以执行以下操作:

    //age = 7;
    let yourGrade;
    let i = grade.length;
    while(i––) {
        if (grade[i][0] == age) {
            yourGrade = grade[i];
            break;
        }
    }
    console.log(yourGrade);
    //[7,'Grade 2']
    //try with age = 5 //undefined

如果你在寻找年龄和等级,这可能是最好的解决方案

记住,这里的等级是二维数组,您将等级的第一个索引元素与年龄进行比较。因此,首先需要从grade数组的第一个元素中找到最大值

var dob = '20120810';
var year = Number(dob.substr(0, 4));
var month = Number(dob.substr(4, 2)) - 1;
var day = Number(dob.substr(6, 2));
var today = new Date();
var age = today.getFullYear() - year;
if (today.getMonth() < month || (today.getMonth() == month && today.getDate() < day)) {
    age--;
}
console.log("You are " + (age + 1) + " Years old");

var grade = [
[6,'Grade 1'],
[7,'Grade 2'],
[8,'Grade 3'],
[9,'Grade 4'],
[10,'Grade 5'],
[11,'Grade 6'],
];

maxAge=grade.reduce(function(max, grade) { 
    return Math.max(max, grade[0]); 
}, -Infinity);

for (i = 0; i < maxAge; i++){
    if(typeof grade[i] !== 'undefined' && grade[i][0]==age){
        console.log(grade[i][1]);
    }
}
var-dob='20120810';
风险年=数量(多个月的子项(0,4));
变量月=数量(月数(4,2))-1;
var日=数量(出生日期(6,2));
var today=新日期();
var age=today.getFullYear()-year;
if(今天.getMonth()
另一种选择是:

var dob = '20120810';
var year = Number(dob.substr(0, 4));
var month = Number(dob.substr(4, 2)) - 1;
var day = Number(dob.substr(6, 2));
var today = new Date();
var age = today.getFullYear() - year;
if (today.getMonth() < month || (today.getMonth() == month && today.getDate() < day)) {
    age--;
}
//console.log("You are " + (age + 1) + " Years old");

var grade = [
[6,'Grade 1'],
[7,'Grade 2'],
[8,'Grade 3'],
[9,'Grade 4'],
[10,'Grade 5'],
[11,'Grade 6'],
];

let yourGrade = grade.find(e => {
    return e[0] == age;
});
console.log('Age: ' + yourGrade[0] + ' and Grade: ' + yourGrade[1]);
var-dob='20120810';
风险年=数量(多个月的子项(0,4));
变量月=数量(月数(4,2))-1;
var日=数量(出生日期(6,2));
var today=新日期();
var age=today.getFullYear()-year;
if(今天.getMonth(){
返回e[0]==年龄;
});
log('Age:'+yourGrade[0]+'和Grade:'+yourGrade[1]);

如果你在寻找年龄和等级,这可能是最好的解决方案

记住,这里的等级是二维数组,您将等级的第一个索引元素与年龄进行比较。因此,首先需要从grade数组的第一个元素中找到最大值

var dob = '20120810';
var year = Number(dob.substr(0, 4));
var month = Number(dob.substr(4, 2)) - 1;
var day = Number(dob.substr(6, 2));
var today = new Date();
var age = today.getFullYear() - year;
if (today.getMonth() < month || (today.getMonth() == month && today.getDate() < day)) {
    age--;
}
console.log("You are " + (age + 1) + " Years old");

var grade = [
[6,'Grade 1'],
[7,'Grade 2'],
[8,'Grade 3'],
[9,'Grade 4'],
[10,'Grade 5'],
[11,'Grade 6'],
];

maxAge=grade.reduce(function(max, grade) { 
    return Math.max(max, grade[0]); 
}, -Infinity);

for (i = 0; i < maxAge; i++){
    if(typeof grade[i] !== 'undefined' && grade[i][0]==age){
        console.log(grade[i][1]);
    }
}
var-dob='20120810';
风险年=数量(多个月的子项(0,4));
变量月=数量(月数(4,2))-1;
var日=数量(出生日期(6,2));
var today=新日期();
var age=today.getFullYear()-year;
if(今天.getMonth()
另一种选择是:

var dob = '20120810';
var year = Number(dob.substr(0, 4));
var month = Number(dob.substr(4, 2)) - 1;
var day = Number(dob.substr(6, 2));
var today = new Date();
var age = today.getFullYear() - year;
if (today.getMonth() < month || (today.getMonth() == month && today.getDate() < day)) {
    age--;
}
//console.log("You are " + (age + 1) + " Years old");

var grade = [
[6,'Grade 1'],
[7,'Grade 2'],
[8,'Grade 3'],
[9,'Grade 4'],
[10,'Grade 5'],
[11,'Grade 6'],
];

let yourGrade = grade.find(e => {
    return e[0] == age;
});
console.log('Age: ' + yourGrade[0] + ' and Grade: ' + yourGrade[1]);
var-dob='20120810';
风险年=数量(多个月的子项(0,4));
变量月=数量(月数(4,2))-1;
var日=数量(出生日期(6,2));
var today=新日期();
var age=today.getFullYear()-year;
if(今天.getMonth(){
返回e[0]==年龄;
});
log('Age:'+yourGrade[0]+'和Grade:'+yourGrade[1]);

中的
更改为
,看起来是这样的。这里的列表中有列表。如果您打算访问6、7、8、9等。。那你就需要