2016-04-26 51 views
0

这段代码具有我在注释中列出的值。JavaScript对象 - 数字键字面值undefined

var studentid = course.roster[i];  // studentid = 1367 
console.log(studentid);    // prints 1367 
console.log(students[1367]);   // correctly prints a student object 

如果我改变第三行中的键使用具有完全相同值的变量,那么结果是未定义的。为什么?

console.log(students[studentid]);  // fails to print correctly 

这是console.log(students[1367])输出:

Object { 
    lname: "John", 
    fname: "Smith", 
    grade: "Sophomore", 
    id: "1367", 
    email: "[email protected]" 
} 

这是console.log(students[studentid])输出:

undefined 
+2

可能'studentid'就是回报字符串 – uzaif

+0

这是否解决您的问题? – uzaif

回答

2

问题是

var studentid = course.roster[i];  // studentid = 1367 

其返回的字符串和integerid所以尽量到studentid转换成字符串

var studentid = parseInt(course.roster[i]);  // studentid = 1367 

将工作你的情况

0

尝试将字符串ID解析为数字。

console.log(students[Number(studentid)]);