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

时间:2015-07-29 10:49:19

标签: javascript arrays object

我想在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}}

但会覆盖最后一项......

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

您可以轻松地将用户名用作键:

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循环中的法线(又名if( people[person] instanceof Person ) // run code),忽略object可能存在的任何可能的默认函数或原型函数。

答案 2 :(得分:0)

更改此

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将返回0