Javascript 如何计算使用邀请的成员数?
这是我的密码。我想记录到控制台使用的邀请总数,但它记录到控制台使用的所有邀请Javascript 如何计算使用邀请的成员数?,javascript,node.js,discord.js,Javascript,Node.js,Discord.js,这是我的密码。我想记录到控制台使用的邀请总数,但它记录到控制台使用的所有邀请 简单地说,我想要所有使用的邀请的总和。如果您有任何想法,请让我知道:)我建议使用映射和If条件来求和,而不是使用过滤器 let sum=0 映射(dav=>{ if(dav.inviter.id==msg.author.id){ sum+=dav.uses } }) 控制台日志(总和) 这将为您提供一系列已使用的邀请: msg.guild.fetchinvests().then(davs=>{ //过滤掉未使用的邀请
简单地说,我想要所有使用的邀请的总和。如果您有任何想法,请让我知道:)我建议使用映射和If条件来求和,而不是使用过滤器
let sum=0
映射(dav=>{
if(dav.inviter.id==msg.author.id){
sum+=dav.uses
}
})
控制台日志(总和)
这将为您提供一系列已使用的邀请:
msg.guild.fetchinvests().then(davs=>{
//过滤掉未使用的邀请
const davetler=davs.filter(dav=>dav.uses>0);
//或者,如果您只希望邮件作者使用邀请
//const davetler=davs.filter(dav=>dav.uses>0&&dav.inviter.id==msg.author.id);
//仅包含已使用邀请的集合的大小
log(davetler.size);
msg.channel.send(`Sunucumuzda${davs.size}adet davet bulunuyor.\n`)
})
davelter是用户邀请的集合,因为一个用户可以有许多邀请,所以您不能在这里使用toString()
方法。
正确的方法是:
const Discord = require("discord.js");
const db = require("quick.db");
exports.run = async (client, msg, args) => {
msg.guild.fetchInvites().then(davs => {
let davetler = davs.filter(dav => dav.inviter.id === msg.author.id).toString()
console.log(davetler.uses)
msg.channel.send(`Sunucumuzda ${davs.size} adet davet bulunuyor.\n`)
})
};
exports.conf = {
enabled: true,
guildOnly: true,
aliases: ["davetler"],
permLevel: 0
};
exports.help = {
name: "davet",
description: "",
usage: "c!davet"
};
或者使用Yeah reduce也可以,但现在我在质疑我是否正确解释了期望的结果,我认为你的答案可能就是他想要的答案。它记录
1
到控制台,但我邀请了多个?@Kaan此解决方案记录了邀请被使用的次数。如果您希望创建和使用至少一次邀请的数量,请使用Chris Satchell的答案。您最初的描述对于期望的结果不够清楚。.forEach
比您建议中的.map
更合适。
exports.run = async (client, msg, args) => {
msg.guild.fetchInvites().then(davs => {
let davetler = davs.filter(dav => dav.inviter.id === msg.author.id)
let invitesUses = 0;
davetler.map(invite => invitesUses+=invite.uses)
msg.channel.send(`Sunucumuzda ${invitesUses} adet davet bulunuyor.\n`)
})
}