所以我写了一个算法,把一个单词转换成猪拉丁语。这里是。当前两个字母是元音时,猪拉丁算法不起作用
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");
所有的结果都是正确的,除了'八'。出于某种原因,它会导致'else if'语句在触发'else'语句时触发。我认为这是因为当单词的第一个和第二个字母不是元音时,'else if'语句触发,并且单词'eight'的前两个字母是元音。我不想找到解决方案,因为我想自己弄清楚。我希望有人能向我解释为什么'八'会触发'else if'声明而不是'else'声明。为了澄清,'八'应该返回'八路'(即'其他'声明)。我希望这是有道理的。如果不是,请随时要求澄清。感谢您的帮助!
我不认为'condition'按照您认为的方式工作。请参阅https://stackoverflow.com/a/19161184/2040863 –
'var condition = vowels [0] || ...'和'var condition = vowels [0];'一样'' – dandavis