gpt4 book ai didi

javascript - 我无法理解这里的逻辑

转载 作者:行者123 更新时间:2023-12-01 03:18:11 26 4
gpt4 key购买 nike

我编写了一个函数来转换为 PigLatin。

结果:手套

预期:ovelay

第一次使用函数prepareCononants

   str      = 'glove'
prepared = 'loveg'

第二次

   str      = 'loveg'
prepared = 'ovegl'

第三次

 str      = 'ovegal'
prepared = ''

不满足条件prepared.length > 0,因此应返回str + 'ay'

但是不,它会返回这里而不是返回到translatePigLatin 函数。它将递归调用函数prepareCononants,次数比我预期的多2倍

if(prepared.length > 0) {
debugger;
prepareCononants(prepared);
}

debugger;//here

return str + "ay";
<小时/>

代码:

function translatePigLatin(str) {
let word = prepareVowels(str);

if(word.length > 0) {
return word;
}

return prepareCononants(str);

}

function prepareVowels(str) {
let vowels = [
'a', 'e',
'i', 'o',
'u'
];

return vowels.map((vowel) => {
if(vowel === str[0]) {
return str + 'way';
}
})
.filter((word) => {
return word != null;
})
.toString();
}

function prepareCononants(str) {
debugger;
let consonants = [
'b', 'c',
'd', 'f',
'g', 'h',
'j', 'k',
'l', 'm',
'n', 'p',
'q', 'r',
's', 't',
'v', 'w',
'x', 'y',
'z'
];

let prepared = consonants.map((val) => {
if(str[0] === val) {
let word = str.substring(1, str.length);
word += str[0];
return word;
}})
.filter((word) => {
return word !== 'undefined';
})
.toString()
.replace(/,/g,'');

if(prepared.length > 0) {
debugger;
prepareCononants(prepared);
}
debugger;

return str + "ay";
}


console.log(translatePigLatin("glove"));

PS:我做了另一个实现,但我无法理解这里的问题。

最佳答案

问题是这样的:

if (prepared.length > 0) {
prepareCononants(prepared);
}
return str + "ay";

您仍在再次执行该函数,但返回第一个结果。你应该这样做:

if (prepared.length > 0) {
return prepareCononants(prepared);
}
return str + "ay";

这输出“ovelay”

关于javascript - 我无法理解这里的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45399952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com