我想执行这个函数少于3次,但每次都使用不同的值:
socket.broadcast.to(role).emit('login', {
onlineusers: list
});
我有3个角色:非mods, mods和admins。不同角色的list
值不同,如下所示:non-mods => nonmodslist, mods => modslist, admins => adminslist
我试着:
roles = {non-mods : nonmodslist, mods : modslist, admins : adminslist}
for(let {non-mods, mods, admins} of roles) {
socket.broadcast.to(role).emit('login', {
onlineusers: list
});
但我真的不知道从那里做什么。我错过了什么?
您可以使用for of
循环与Object.entries
和解构
let roles = {'non-mods': nonmodslist, 'mods': modslist, 'admins': adminslist};
for (let [role, list] of Object.entries(roles)) {
socket.broadcast.to(role).emit('login', {
onlineusers: list
});
}
请尝试下面的代码
let roles = {'non-mods' : nonmodslist, 'mods' : modslist, 'admins' : adminslist}
for(let rolename in roles) {
socket.broadcast.to(rolename).emit('login', {
onlineusers: roles[rolename]
});
}
for (var x = 0; x < roles.length; x++){
socket.broadcast.to(roles[x]).emit.....
}
像这样试试;
您想要设置一个索引(x)来遍历角色,当它到达roles.length....时停止然后,您可以使用索引
访问特定的角色。对象迭代可以使用Object.keys(objectReference);
roles = {non-mods : nonmodslist, mods : modslist, admins : adminslist}
for(roleKey of Object.keys(roles)) {
console.log(roles[roleKey]);
// Perform operation using roles[roleKey]
}