【问题标题】:getting specific data from map从地图中获取特定数据
【发布时间】:2021-06-16 11:29:27
【问题描述】:
Map(1) {
  undefined => Invite {
    code: 'yX4F9sFzDT',
    channel: TextChannel {
      id: '768577451848368129',
      type: 0,
      client: [Client],
      guild: [Guild],
      name: 'invite-the-bot',
      position: 12,
      parentID: '768551919110324237',
      permissionOverwrites: [Collection [Map]],
      rateLimitPerUser: 0,
      topic: null,
      messages: [Collection [Map]],
      lastMessageID: '814571396583129128',
      lastPinTimestamp: null
    }
}

代码:

export async function guildMemberAdd(client: IMClient, guild: Guild, member: Member): Promise<void> {
  if (!client.loaded) return;
  member.guild.getInvites().then(async (guildInvites) => {
    const existingInvites = client.invites.get(member.guild.id);
    console.log(existingInvites);
    const newInvites: Map<string, Invite> = new Map();
    guildInvites.forEach((i) => newInvites.set(i.id, i));
    client.invites.set(member.guild.id, newInvites);
    const invite = guildInvites.find((i) => {
      const tempInvite = existingInvites?.get(i.code);
      if (!tempInvite) return false;
      else {
        console.log(tempInvite);
        return tempInvite && tempInvite.uses < i.uses;
      }
    });

嗨。

我目前正在尝试从此地图中获取code。通过循环 guildInvites.find 并尝试在此地图中查找 i.code。 但是,我得到了undefined 返回。我不确定为什么,任何指针将不胜感激。

【问题讨论】:

    标签: javascript typescript dictionary


    【解决方案1】:

    我没有添加评论的声誉,所以我必须使用答案。

    邀请界面,至少你给的那个,没有id,只有code。如果这是完整的界面,那么在这段代码中:

    guildInvites.forEach((i) =&gt; newInvites.set(i.id, i));

    不应该是:

    guildInvites.forEach((i) =&gt; newInvites.set(i.code, i));.

    调试时newInvites变量有值吗?

    【讨论】:

    • 嗨。是的,newInvites 确实有值。但是,console.log(tempInvite) 是未定义的。
    猜你喜欢
    • 2022-11-10
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 2015-09-26
    • 2017-07-19
    • 1970-01-01
    相关资源
    最近更新 更多