如何将pigIt函数生成的pig数组元素拼接为完整句子?
解决Pig Latin函数的拼接返回问题
你的代码存在几个关键问题,导致无法正确返回测试用例要求的结果:
- 切片范围错误:
latinTwo里的x.slice(1, str.length-1)误用了整个输入字符串str的长度,应该针对每个单词x取从索引1到末尾的部分,即x.slice(1)。 - 未收集处理结果:当前代码仅循环打印单个转换后的单词,没有将它们存入数组,自然无法通过
join拼接成完整句子。 - 函数无返回值:测试用例要求函数返回拼接后的字符串,但你的代码没有
return语句。
修正后的代码
function pigIt(str){ // 分割字符串为单词数组,逐个处理后拼接返回 return str.split(' ').map(word => { // 将单词首字母移到末尾并追加'ay' return word.slice(1) + word.slice(0, 1) + 'ay'; }).join(' '); }
代码说明
split(' '):将输入字符串拆分为单个单词的数组。map遍历:对每个单词执行Pig Latin转换——截取除首字母外的部分,拼接首字母和ay。join(' '):将转换后的单词数组用空格拼接成完整句子,作为函数返回值,完全匹配测试用例要求。
可选扩展:处理标点符号
如果输入包含非单词字符(如标点),可以添加判断逻辑跳过转换:
function pigIt(str){ return str.split(' ').map(word => { // 仅对纯字母组成的单词执行转换 if (/^[A-Za-z]+$/.test(word)) { return word.slice(1) + word.slice(0, 1) + 'ay'; } // 非字母内容直接返回 return word; }).join(' '); }
内容的提问来源于stack exchange,提问作者Kevin Phan
相关产品推荐
相关产品推荐

