您可以使用以下代码检查首字母是元音还是辅音。如果它是元音,你接受这个词并添加"方式"到最后。如果它是一个辅音,它会将第一个字母移到最后并加上一个" ay"出于某种原因,当它是元音时,它会执行我的其他功能吗?任何帮助,将不胜感激。这是我的代码:
function translatePigLatin(str) {
var vowels = ["a", "e", "i", "o", "u"];
for (i = 0; i < vowels.length; i++) {
if (str.charAt(0) === vowels[i]) {
return str += "way";
} else {
var first = str.charAt(0);
return str.substr(1, str.length) + first;
}
}
}
console.log( translatePigLatin("eight") );
&#13;
答案 0 :(得分:0)
您的for
循环只会运行一次,即使您的第一个条件失败,您的else
也将被取消,因此它将会返回。考虑从循环中移动else
逻辑。
function translatePigLatin(str) {
var vowels = ["a", "e", "i", "o", "u"];
for (i = 0; i < vowels.length; i++) {
if (str.charAt(0) === vowels[i]) {
return str += "way";
}
}
var first = str.charAt(0);
return str.substr(1, str.length) + first + "ay";
}
console.log( translatePigLatin("eight") );
答案 1 :(得分:0)
这种情况正在发生,因为如果条件检查'a'作为单词的第一个元音,如果字符不匹配则转到else语句。因此,其余的元音没有被检查,理想的方法是首先检查所有元音,然后做其他部分下面是代码
function translatePigLatin(str) {
var vowels = ["a", "e", "i", "o", "u"];
var first = str.charAt(0);
for (i = 0; i < vowels.length; i++) {
if (first === vowels[i]) {
return str += "way";
}
}
return str.substr(1, str.length) + first;
}
console.log( translatePigLatin("eight") );
答案 2 :(得分:0)
你得到“ighte”而不是“eightway”的原因是你的循环首次运行,你将字符串的第一个字母(“e”)与vowels
数组中的第一个元音进行比较( “A”)。
使用for
。
includes()
循环
function translatePigLatin(str) {
if (["a", "e", "i", "o", "u"].includes(str.charAt(0))) {
return str += "way";
}
else {
var first = str.charAt(0);
return str.substr(1, str.length) + first;
}
}
如果您对for
循环的意图是继续迭代函数直到遇到元音,那么我们可以使用它:
function translatePigLatin(str) {
for (var i = 0; i < str.length; i++) {
if (["a", "e", "i", "o", "u"].includes(str.charAt(i))) {
return str += "way";
}
else {
var first = str.charAt(0);
str = str.substr(1, str.length) + first;
}
}
}
答案 3 :(得分:-2)
尝试这样的事情:
function translatePigLatin(str) {
var vowels = ["a", "e", "i", "o", "u"];
var firstVowel = false;
for (var i = 0; i < vowels.length; i++) {
if (str.charAt(0) === vowels[i]) {
firstVowel = true;
}
}
if (firstVowel) {
return str += "way";
} else {
var first = str.charAt(0);
return str.substr(1, str.length) + first + "ay";
}
}
console.log( translatePigLatin("eight") );
console.log( translatePigLatin("run") );