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

如何从字符串中提取中间字符?CodeWars编程题实现咨询

现有代码存在的问题

  • 运算符优先级错误:你写的s.length-1/2会优先计算1/2得到0.5,实际执行逻辑为s.length - 0.5,得到的是小数索引,字符串无法通过小数索引获取正确字符,正确写法应该加括号调整优先级:(s.length - 1) / 2。
  • 存在冗余的for循环:不需要遍历整个字符串,字符串长度是固定值,直接计算中间位置取值即可,循环逻辑完全多余,且每次循环都会重复给middle赋值,没有实际作用。
  • 奇偶判断重复执行:两个if判断每次循环都会执行,完全可以提前计算长度的奇偶性,不需要重复判断。

正确实现方案

思路:先获取字符串长度,根据长度奇偶性直接定位中间字符位置即可:

const getMiddle = (s) => {
  const len = s.length;
  const mid = Math.floor(len / 2);
  // 奇数长度取中间1位,偶数长度取中间2位
  return len % 2 === 1 ? s[mid] : s[mid - 1] + s[mid];
}

也可以用substr方法写得更简洁:

const getMiddle = s => s.substr(Math.ceil(s.length / 2 - 1), s.length % 2 === 1 ? 1 : 2);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:39:03