Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何计算使用邀请的成员数?_Javascript_Node.js_Discord.js - Fatal编程技术网

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`)
    })
}