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

为何spinWords函数输出存在undefined?如何正确反转长度≥5的单词

问题原因及修复方案

出现undefined的直接原因

字符串索引越界:你在反转单词的内层循环中,初始值设为j = curr.length,但字符串的索引范围是0到curr.length - 1,访问curr[curr.length]会返回undefined,这些undefined被拼接到结果里,就出现了输出中的异常内容。

代码存在的其他问题

  • 函数名拼写错误:unction漏写了开头的f,应为function
  • 判断条件不符合需求:你需要反转长度超过5个字母的单词,但代码用的是curr.length >=4,会错误反转4个字母的单词
  • 未处理短单词:代码仅拼接符合条件的反转单词,完全忽略了长度不满足的单词(比如示例中的"Hey"),不符合原需求
  • 结果拼接逻辑错误:全局变量reversedWord会把所有反转单词直接连在一起,没有保留原有的空格分隔

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

方式1:使用map方法(更简洁)

function spinWords(string){
    let newArr = string.split(' ');
    let resultArr = newArr.map(word => {
        // 仅反转长度超过5的单词
        if (word.length > 5) {
            return word.split('').reverse().join('');
        }
        return word;
    });
    return resultArr.join(' ');
}
console.log(spinWords("Hey fellow warriors"));
// 输出:Hey wollef sroirraw

方式2:基于原for循环修改

function spinWords(string){
    let newArr = string.split(' ');
    let result = [];
    for(let i = 0; i < newArr.length; i++){
        let curr = newArr[i];
        if (curr.length > 5){
            let reversed = "";
            // 从最后一个有效索引(length-1)开始循环
            for(let j = curr.length - 1; j >= 0; j--){
                reversed += curr[j];
            }
            result.push(reversed);
        } else {
            result.push(curr);
        }
    }
    return result.join(' ');
}
console.log(spinWords("Hey fellow warriors"));
// 输出:Hey wollef sroirraw

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:20:27