如何从javascript中包含更多对象的对象中获取值
我有一个全局变量如何从javascript中包含更多对象的对象中获取值,javascript,node.js,Javascript,Node.js,我有一个全局变量var room={}当我创建一个rooms时,它会转到那里,我会得到这样的对象 { '4bea542f-147c-4763-ab1c-bb6c40b1392e': { private: false, users: { btrJ7946MkjFSz_zAAAA: [Object], 'qe_1igD7Q-RbDWc1AAAC': [Object] }, gameS: false, nextUser: 'btrJ7
var room={}
当我创建一个rooms时,它会转到那里,我会得到这样的对象
{
'4bea542f-147c-4763-ab1c-bb6c40b1392e': {
private: false,
users: {
btrJ7946MkjFSz_zAAAA: [Object],
'qe_1igD7Q-RbDWc1AAAC': [Object]
},
gameS: false,
nextUser: 'btrJ7946MkjFSz_zAAAA',
timer: null,
round: 0,
winner: false,
alreadyGuess: [],
timerStartedAt: 0,
settings: { gameStarted: false, time: null }
},
'e6ea6785-e522-4b8c-aeb8-b2551e89c895': {
private: false,
users: {
'n5BODsuqAWb5Y-WAAAAD': [Object],
paf4cWgX08Qi_8m5AAAE: [Object]
},
gameS: false,
nextUser: 'n5BODsuqAWb5Y-WAAAAD',
timer: null,
round: 0,
winner: false,
alreadyGuess: [],
timerStartedAt: 0,
settings: { gameStarted: false, time: null }
}
}
我如何访问这些具有不同名称的对象,如'4bea542f-147c-4763-ab1c-bb6c40b1392e',以及可能获取值private=false的对象,您可以跳过
const o={'4bea542f-147c-4763-ab1c-bb6c40b1392e':{private:false,用户:{btrJ7946MkjFSzèzAAAA:[Object],'qe_1igD7Q-RBDWC1aac':[Object]},游戏:false,下一个用户:'btrJ7946MkjFSzèzAAAA',计时器:null,回合:0,赢家:false,alreadyGuess:[],计时器:0,设置:{gameStart:false,time:null},'e6ea6785-e522-4b8c-aeb8-b2551e89c895':{private:false,用户:{'n5BODsuqAWb5Y Waaad':[Object],PAF4CWG08Qi_8m5AAAE:[Object]},游戏:false,下一个用户:'n5BODsuqAWb5Y Waaad',计时器:null,回合:0,赢家:false,alreadyGuess:[],计时器开始时间:0,设置:{gameStarted:false,time:null};
const res=Object.values(o.filter)(x=>!x.private);
控制台日志(res)代码>
.as控制台包装器{top:0;max height:100%!important}
取决于您想要完成什么,严格地回答您的问题Object.values()
可能是最简单的,但它不会保留您可能有兴趣保留的密钥
要获取密钥,请使用密钥
var publicRoomsIds=Object.key(房间).filter(函数(键){
var房间=房间[钥匙];
返回(room.private==false);
});
要获取值(无键),请使用values
var publicRooms=Object.values(房间).filter(功能(房间){
返回(room.private==false);
});
var房间={
“4bea542f-147c-4763-ab1c-bb6c40b1392e”:{
二等兵:错,
},
“e6ea6785-e522-4b8c-aeb8-b2551e89c895”:{
二等兵:是的,
},
“e6ea6785-3321-4b8c-aeb8-b2551e89c895”:{
二等兵:错,
},
“e6ea6785-7663-4b8c-aeb8-b2551e89c895”:{
二等兵:是的,
},
};
var publicRoomsIds=Object.key(rooms).filter(function(key){
var房间=房间[钥匙];
返回(room.private==false);
});
var publicRooms=对象.值(房间).过滤器(功能(房间){
返回(room.private==false);
});
控制台日志(PublicRoomSID);
控制台日志(公共房间)
应该是Object.Keys(房间)Object.values(房间).filter(e=>e.private==false)
只要使用Object.entries()
就可以了。Object.entries(obj).filter([,room])=>room.private==false)
甚至Object.entries(obj).filter([,{private}=>!private)