繁体   English   中英

Javascript多维对象覆盖最后插入的项目

[英]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_statususernames.Ted.room_status usernames['Ted'].room_status将返回0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM