如何在打字稿中使用带有条件语句的循环

问题描述 投票:0回答:1

几天来我不知道如何让 for 循环迭代所有项目,然后运行条件。所以我希望它迭代整个通道,然后检查它是否正确。当每个项目通过时,它将运行条件语句。当条件为真时。我尝试过映射,可能是错误的,甚至尝试将其转换为 JSON。我什至开始使用消息集合进行聊天。

它可以在 Javascript 中运行,所以不确定 typescript 在做什么。非常感谢任何帮助。

export = {
  name: 'addfav',
  aliases: ['Addfav'],
  type: CommandTypes.PrefixCommand,
  channelWhitelist: ['1147233774938107966'],
  ownerOnly: true,
  async execute(message: Message): Promise<void> {
    if (!message.mentions.channels.map((m) => m).length) {
      await message.reply('Did you forget to add the channel?');
    } else {
      let getChannel = await message.content.replace(/\D/g, '');
      let isAdded = await checkfav(message.author.id);
      for (var i = 0; i < isAdded.length; i++) {
        if (isAdded[i].channel === getChannel) {
          await message.reply('You already have a channel');
          break;
        } else {
          await addfav(getChannel);
          await message.reply('Channel added');
        }
      }
    }
  },
};
typescript discord.js
1个回答
0
投票

在您的场景中,您不需要迭代喜爱的频道。您只需要检查频道是否已被收藏。您可以使用

some
来实现:

export = {
  name: 'addfav',
  aliases: ['Addfav'],
  type: CommandTypes.PrefixCommand,
  channelWhitelist: ['1147233774938107966'],
  ownerOnly: true,
  async execute(message: Message): Promise<void> {
    if (!message.mentions.channels.map((m) => m).length) {
      await message.reply('Did you forget to add the channel?');
      return;
    }
    let channelName = await message.content.replace(/\D/g, '');
    // get favaorited channels
    const favoritedChannels = await checkfav(message.author.id);
    const isFavorite = favoritedChannels.some((fav) => fav.channel === channelName)  
    if(isFavorite) {
      await message.reply('You already have this channel favorited');
      return;
    }
    await addfav(channelName);
    await message.reply('Channel added');
  },
};

但是,如果您确实需要迭代数组并在每个元素上运行异步函数,请按以下方法操作:

  const favoritedChannels = await checkfav(message.author.id);
  for await (const channel of favoritedChannels) {
    await doSomething(channel);
  }
© www.soinside.com 2019 - 2024. All rights reserved.