Hector
Hector

Reputation: 17

discordjs return total users in forEach?

I did try this code :

message.client.guilds.cache.forEach((guild) => {
     console.log(guild.memberCount)
})

and it returns like this:

300
200
100
etc

How to get a total in one go like them all together so it shows up like 600 instead all seperate. I know there is an other code that shows all the users in the guild, but i just want to know how to do it this way, so i can expand the code and filter them on presence.

i just dont know how to total the value in a forEach or map

regards

//UPDATE I need to get it working like this method, this shows like the above log: 100 200 300

  client.guilds.cache.forEach((guild) => {
     const total = guild.members.cache.filter(member => member.presence?.status == "online").size
     console.log("per 1", total)
    
    
     
     })

Upvotes: 1

Views: 89

Answers (3)

claurennt
claurennt

Reputation: 78

You could use map + reduce chaining...you can retrieve the 'memberCount' with the mapping and summing the actual values with the reduce:

    const guilds = [
    { memberCount: 100 },
    { memberCount: 200 },
    { memberCount: 300 },
    { memberCount: 400 }
];

const totalMembers = guilds
  .map((guild) => guild.memberCount)
  .reduce((prev, curr) => prev + curr, 0);

console.log(totalMembers);

Upvotes: 1

kappaprajd
kappaprajd

Reputation: 83

You can use the Array.reduce() method.

const totalUsers = message.client.guilds.cache.map(el => el.memberCount).reduce((a,b) => a+b)

Upvotes: 0

ruby_newbie
ruby_newbie

Reputation: 3285

You can write a function like:

   function arrSum(arr){
        total = 0;  
        arr.forEach(function(key){
            total = total + key;            
        });
        return total;
    }

and use it like:

arrSum(message.client.guilds.cache);

Upvotes: 1

Related Questions