You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写hasNoneLetters函数遇测试不通过,请求排查解决

排查hasNoneLetters函数的逻辑错误

你的代码存在三个核心问题,导致测试用例不通过:

  • 逻辑完全反转:phrase.includes(blacklist)返回true时,说明phrase包含整个blacklist字符串,这时候应该返回false(需求是含黑名单字符就返回false),但你返回了true;反之不包含时返回false,和需求完全相反。
  • 检查对象错误:需求要求检查blacklist中的任意单个字符是否存在于phrase中,而你的代码是检查整个blacklist字符串是否是phrase的子串,完全不符合需求逻辑。
  • 未处理大小写不敏感:需求明确比较不区分大小写,但你的代码没有对两个字符串做统一大小写的转换,导致无法匹配大小写不同的字符。

修正后的代码(两种实现方式)

方式一:遍历黑名单字符

function hasNoneLetters(phrase, blacklist) {
  // 统一转小写,消除大小写差异
  const lowerPhrase = phrase.toLowerCase();
  const lowerBlacklist = blacklist.toLowerCase();
  
  // 遍历黑名单每个字符,检查是否存在于phrase中
  for (const char of lowerBlacklist) {
    if (lowerPhrase.includes(char)) {
      // 只要有一个字符存在,直接返回false
      return false;
    }
  }
  // 所有字符都不存在,返回true
  return true;
}

方式二:使用数组every方法(更简洁)

function hasNoneLetters(phrase, blacklist) {
  const lowerPhrase = phrase.toLowerCase();
  // 将黑名单转小写后拆分为字符数组,检查每个字符都不在phrase中
  return [...blacklist.toLowerCase()].every(char => !lowerPhrase.includes(char));
}

验证示例

  • hasNoneLetters('Mate Academy', 'pqrs'):转小写后phrase为'mate academy',黑名单字符p/q/r/s均不在其中,返回true,符合需求。
  • hasNoneLetters('ABC', 'a'):转小写后phrase为'abc',包含黑名单字符a,返回false,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:15:51