Intenté este código:
message.client.guilds.cache.forEach((guild) => { console.log(guild.memberCount) })y vuelve asi:
300 200 100 etcCómo obtener un total de una sola vez como todos juntos para que aparezca como 600 en lugar de todo por separado. Sé que hay otro código que muestra a todos los usuarios del gremio, pero solo quiero saber cómo hacerlo de esta manera, para poder expandir el código y filtrarlos por presencia.
simplemente no sé cómo totalizar el valor en un forEach o map
Saludos
// ACTUALIZAR Necesito que funcione como este método, esto se muestra como el registro anterior: 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) })Puedes escribir una función como:
function arrSum(arr){ total = 0; arr.forEach(function(key){ total = total + key; }); return total; }y usarlo como:
arrSum(message.client.guilds.cache);Puede usar map + reduce encadenamiento ... puede recuperar el 'memberCount' con el mapeo y sumar los valores reales con 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);Puede usar el método Array.reduce() .
const totalUsers = message.client.guilds.cache.map(el => el.memberCount).reduce((a,b) => a+b)