我需要帮助执行if-function - 我的" if-function"执行,以及我的" else-function"?

时间:2018-05-01 13:53:03

标签: javascript

您可以使用以下代码检查首字母是元音还是辅音。如果它是元音,你接受这个词并添加"方式"到最后。如果它是一个辅音,它会将第一个字母移到最后并加上一个" 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;
&#13;
&#13;

4 个答案:

答案 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") );