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

JavaScript递归处理字符串时函数返回值未正确保存问题

问题原因
  • 递归调用结果未返回:shifter函数匹配到首字符为辅音、触发递归调用时,没有将递归返回的处理结果作为当前函数的返回值,计算结果直接丢失,最终函数始终返回最初传入的原始单词。
  • 字符串为不可变类型:你对word执行split生成数组、shift删除首字符的操作,都是基于新生成的数组对象完成,不会修改原始的word字符串变量,最后返回的自然是未修改的原值。
修复后的代码
function deleteConsonants(sentence) {
    let words = sentence.split(" ");
    let newWords = [];
    for (let i = 0; i < words.length; i++) {
        let newWord = shifter(words[i]);
        newWords.push(newWord);
    }
    return newWords.join(" ");
}

function shifter(word) {
    // 边界处理:避免全辅音单词出现空值时报错、死递归
    if(!word) return ''
    const vowels = "aeiouAEIOU";
    if (!vowels.includes(word[0])) {
        // 截掉首字符传入递归,直接返回递归处理后的结果
        return shifter(word.slice(1))
    }
    return word
}

// 测试用例
let a = deleteConsonants("I love pizza") // "I ove izza"
let b = deleteConsonants("This is blasphemy sir") // "is is asphemy ir"

console.log(a)
console.log(b)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:51:04