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

如何判断字符串是否以指定字符串结尾?JS函数报错排查

问题排查与修复

原代码的核心错误

  • 变量名冲突:filter回调里的参数名用了str,和外层函数的入参str重名。split后的数组元素是单个字符,所以回调里的str.length永远是1,导致str.length > str.length -2的条件始终为真,filter会保留所有字符,最终得到的还是原字符串,完全无法正确截取结尾部分。
  • 截取逻辑错误:硬编码用str.length -2来截取,没有考虑ending的实际长度,即使变量名不冲突,也只能处理长度为2的ending,通用性为0。
  • 返回值类型错误:题目要求返回布尔值true/false,但代码返回的是字符串"true"/"false",这就是测试报错expected 'false' to equal true的直接原因——测试用例期望布尔值,你返回了字符串类型的结果。

修复后的实现

方法1:手动截取比较(兼容旧环境)

function solution(str, ending) {
  // 空字符串默认是任何字符串的结尾
  if (ending.length === 0) return true;
  // 截取str最后N个字符,N等于ending的长度
  const strSuffix = str.slice(-ending.length);
  return strSuffix === ending;
}

方法2:使用原生endsWith方法(简洁高效,ES6+)

JavaScript字符串原生提供了endsWith方法,直接满足需求:

function solution(str, ending) {
  return str.endsWith(ending);
}

测试验证

  • solution('abc', 'bc') → 返回true
  • solution('abc', 'd') → 返回false
  • solution('hello', '') → 返回true(符合字符串结尾规则)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:15:38