[英]Javascript multidimensional object overwriting last inserted item
我正在尝试用javascript获取MD对象,此刻我有一些东西,但这并不是我想要的:
{"usernames":["Ted","Mikey"],"room_status":[0,0]}
我的想法是,我希望当前未将房间状态值0分配给Ted和Mikey。 因此,我可以使用:
$.each(usernames, function(index, value){
//do stuff
})
...遍历名称,并查看将哪个房间状态值分配给了谁。.我还尝试了一些类似的方法:
usernames = {
'username' : {
'username' : username,
'room_status' : 0
}
}
返回:
{"username":{"username":"asdfgasdc","room_status":0}}
但会覆盖最后一个项目...
var users = [{
username: 'Ted',
room_status: 0
}, {
username: 'Mikey',
room_status: 0
}];
这为您提供了一个对象数组,您可以对其进行循环或直接访问
$.each(users, function(index, user){
console.log(user.username + ' - ' + user.room_status);
});
// Ted - 0
// Mikey - 0
var user = users[0];
console.log(user.username + ' - ' + user.room_status);
// Ted - 0
您可以轻松地将用户名用作密钥:
var people = {
Mike: { room_status: 0 },
Ted: { room_status: 0 }
}
并通过for循环遍历它们:
for(var person in people){
people[person].room_status
}
甚至直接访问它们:
people.Mike.room_status
最好将每个人虹吸成一个prototype
并将其分配给username
,因为那样一来,您就可以轻松地检查for循环中的法线(aka if( people[person] instanceof Person ) // run code
,而忽略任何可能的情况object
可能存在的默认函数或原型函数。
改变这个
usernames = {
'username' : {
'username' : username,
'room_status' : 0
}
}
至
usernames[username] = {
'username' : username,
'room_status' : 0
}
因为每个循环都会覆盖'username'
键
var usernames = {};
var usernamesList = ["Ted","Mikey"];
for(var i=0;i < usernamesList.length;i++){
var username = usernamesList[i];
usernames[username] = {
'username' : username,
'room_status' : 0
}
}
会给你
usernames : {
Ted:{username:'Ted',room_status:0},
Mikey:{username:'Mikey',room_status:0}
}
致电:
usernames['Ted'].room_status
或usernames.Ted.room_status
usernames['Ted'].room_status
将返回0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.