我有以下代码:
var userId = r.response[0].uid;
if (typeof ratings[userId] !== 'undefined'){
ratings[userId].likes = ratings[userId].likes++;
ratings[userId].name = r.response[0].first_name +" "+ r.response[0].last_name;
} else {
ratings[userId] = new Object;
ratings[userId].likes = 1;
ratings[userId].name = r.response[0].first_name +" "+ r.response[0].last_name;
}
所以我有奇怪的事情。当我使用console.log(评级)来查看对象中的内容时,它会显示该对象的所有属性。但是当我试图获得这样的任何财产时:
console.log(ratings[12345]) or console.log(ratings["12345"])
未定义。但console.log(ratings)
说我有财产12345(它也是一个对象)。
我的代码有什么问题,如何解决?
答案 0 :(得分:-1)
如果您使用数字作为用户的ID,则必须使用
var userId = '12345';
ratings[userId];
或
ratings['12345'];
或
ratings[12345+""]; // this is the last resort, if possibile don't use it!
请记住,纯数字不允许作为JavaScript变量/键标识符,但如果它们被强制转换为字符串,则可以将它们用作对象中的键。