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

JS实现获取字符串中间字符时索引访问返回NaN问题排查

问题原因分析

核心不符合预期的点是:JavaScript中字符串的索引只能是非负整数,使用小数作为索引访问字符串时,无法匹配到对应的字符,会返回undefined,两个undefined相加的结果就是NaN。

你的代码执行流程拆解(以getMiddle('the')为例)

  1. 'the'的长度为3,计算得到middleDigit = (3 + 1) / 2 = 2
  2. 调用isOdd(2),返回2 % 2 = 0,因此走else分支逻辑
  3. else分支计算得到两个索引值:2 - 0.5 = 1.5、2 + 0.5 = 2.5,二者都是小数
  4. 字符串'the'的有效索引只有0、1、2,使用1.5、2.5访问字符串均返回undefined
  5. undefined + undefined的结果就是你看到的NaN

额外逻辑问题

你的奇偶判断逻辑也存在设计错误:你需要判断的是字符串长度的奇偶性,而非中间值middleDigit的奇偶性。

修正后的实现代码
function getMiddle(str) {
  const len = str.length;
  const mid = Math.floor(len / 2);
  // 长度为奇数返回中间单个字符,偶数返回中间两个
  return len % 2 === 1 ? str[mid] : str[mid - 1] + str[mid];
}
console.log(getMiddle('the')); // 输出h
console.log(getMiddle('test')); // 输出es

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:54:04