I want to execute this function below 3 times but each time with a different value:
socket.broadcast.to(role).emit('login', {
onlineusers: list
});
I have 3 roles: non-mods, mods and admins. The value for list varies for each role like this:
non-mods => nonmodslist, mods => modslist, admins => adminslist
I tried:
roles = {non-mods : nonmodslist, mods : modslist, admins : adminslist}
for(let {non-mods, mods, admins} of roles) {
socket.broadcast.to(role).emit('login', {
onlineusers: list
});
but I really dont know what to do from there. What am I missing?
You can use for of loop with Object.entries and deconstruction
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
});
}
for (var x = 0; x < roles.length; x++){
socket.broadcast.to(roles[x]).emit.....
}
try it like this;
you want to set up an index (x) to iterate through roles, stopping once it reaches roles.length.... then you can access the specific role with that index
Please try below code
let roles = {'non-mods' : nonmodslist, 'mods' : modslist, 'admins' : adminslist}
for(let rolename in roles) {
socket.broadcast.to(rolename).emit('login', {
onlineusers: roles[rolename]
});
}