You need to enable JavaScript to run this app. JavaScript实现查找含指定字母的数组元素函数(discord.js场景)
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript实现查找含指定字母的数组元素函数(discord.js场景)

数组指定字母筛选实现方案(适配discord.js)

采用JS原生简单语法,新手可直接复制复用,无复杂依赖

核心逻辑说明

实现的find函数完全匹配你提到的两个测试场景:

  • 函数支持传入任意数量的目标字母,筛选规则为数组元素包含全部传入的目标字母时,才会被纳入结果
  • 调用find("h", "n", "e")时,只有phone同时包含三个传入字母,匹配后返回,完全符合你写的预期输出
  • 调用find("e")时,super和phone都包含字母e,wood因为没有e会被自动排除,刚好满足你提到的匹配super/phone、排除wood的筛选要求

完整可运行代码

// 定义待筛选的源数组
const array1 = ["super", "phone", "wood"];

// 定义支持多字母参数传入的find函数
function find(...targetLetters) {
  // 遍历源数组执行筛选
  return array1.filter(item => {
    // 检查当前元素是否包含所有传入的目标字母
    return targetLetters.every(letter => item.includes(letter));
  });
}

// 测试1:传入h、n、e,预期返回["phone"]
const results = find("h", "n", "e");
// 发送到discord频道的逻辑,和你原有调用习惯完全匹配
message.channel.send(
  results.length 
    ? results.join("\n") 
    : "没有找到符合匹配规则的元素"
);

注:上面的发送逻辑需要写在discord.js的消息事件回调内部,不需要改动你原有的交互结构

代码逐行解释(新手友好)

  • 函数参数的...targetLetters是JS原生的可变参数写法,不管给find传1个还是10个目标字母,都会自动把所有参数收集成数组,不用手动处理参数长度
  • array.filter()是数组自带的筛选方法,会把满足回调条件的元素拼成新数组返回,不需要手动写循环遍历
  • targetLetters.every()的作用是挨个检查每个传入的目标字母,是否都能在当前数组元素中找到,只要有一个字母找不到,这个元素就会被排除

可调整的匹配规则

如果后续需要修改匹配逻辑,只要替换对应的数组方法即可:

  • 要改成「只要包含任意一个传入字母就算匹配」,把every换成some即可
  • 要实现不区分大小写匹配,把检查行的逻辑改成:
    return targetLetters.every(letter => item.toLowerCase().includes(letter.toLowerCase()));
    

内容的提问来源于stack exchange,提问作者Hytherist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 01:54:02