gpt4 book ai didi

javascript - 当前两个字母是元音时,Pig Latin 算法不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:55:52 25 4
gpt4 key购买 nike

所以我写了一个算法,将一个词转换成 Pig Latin。在这里。

function translatePigLatin(str) {
var vowels = ['a','e','i','o','u']
var splitStr = str.split('');
var newStr = '';
var condition = vowels[0] || vowels[1] || vowels[2] || vowels[3] || vowels[4];
if(splitStr[0] !== condition && splitStr[1] == condition){
splitStr.push(splitStr[0] + 'ay');
splitStr.shift();
newStr = splitStr.join('');
console.log('first');

} else if (splitStr[0] !== condition && splitStr[1] !== condition) {
splitStr.push(splitStr[0] + splitStr[1] + 'ay');
splitStr.shift();
splitStr.shift();
newStr = splitStr.join('');
console.log('second');

} else {
splitStr.push('way');
newStr = splitStr.join('');
console.log('third');
}
console.log(newStr);
}

translatePigLatin("eight");
translatePigLatin("california");
translatePigLatin("paragraphs");
translatePigLatin("glove");
translatePigLatin("algorithm");

除了“8”之外,所有结果都是正确的。由于某种原因,它导致“else if”语句在它应该触发“else”语句时触发。我认为这是因为当单词的第一个和第二个字母不是元音,而单词“eight”的前两个字母是元音时,就会触发“else if”语句。我不是在寻找解决方案,因为我想自己解决这个问题。我希望有人能向我解释为什么“八”会触发“else if”语句而不是“else”语句。为澄清起见,“八”应作为“八路”返回(即“其他”语句)。我希望这是有道理的。如果不是,请随时要求澄清。感谢您的帮助!

最佳答案

正如 John Hascall 和 dandavis 评论的那样,condition 可能无法按您预期的方式工作。

这个语句,splitStr[0] !== condition,是一个非常有想象力的语法(这很有道理,让我想找到一种方法来支持/破解它:)。

在 JS 中,您会发现类似 vowels.includes(splitStr[0])!vowels.includes(splitStr[0]) 的性能可能更好您努力进行的比较。

语句,条件 = vowels[0] ||元音[1] ||元音[2] ||元音[3] || vowels[4],简单地分配变量,condition,“or”序列中的第一个“truthy”变量,或者它遇到的最后一个变量,如果都是“falsey”。

关于javascript - 当前两个字母是元音时,Pig Latin 算法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46232381/

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