我的for循环有什么问题?

时间:2013-11-15 22:48:16

标签: javascript for-loop

我是Javascript的新手,我正在尝试做一些练习。我在这里找到了其他更有效的方法来解决这个问题,但无论如何,这是我尝试这样做的方式:

var char = prompt("Give me a letter");
char = char.toLowerCase();

function isVowel(char){
  var vowels = new Array('a','e','i','o','u');

  for(i = 0; i < vowels.length; i++){
    if(vowels[i] == char){
      return "This letter is a vowel.";
    }else{
      return "This letter is not a vowel.";
    }
  }
}
alert(isVowel(char));

现在,我知道这不是最好的方法,但我想了解我的for循环有什么问题,因为“a”是它认为是元音的唯一字母。 有人能指出我没有在整个阵列中运行的原因吗?

提前致谢

3 个答案:

答案 0 :(得分:3)

在你确定&#34;是&#34;之前你不应该回来。或&#34;不&#34;答案。

尝试这样的事情:

var char = prompt("Give me a letter");
char = char.toLowerCase();

function isVowel(char){
  var vowels = new Array('a','e','i','o','u');

  for(i = 0; i < vowels.length; i++){
    if(vowels[i] == char){
      return "This letter is a vowel.";
    }
  }
  return "This letter is not a vowel.";
}
alert(isVowel(char));

答案 1 :(得分:2)

var char = prompt("Give me a letter");
char = char.toLowerCase();

function isVowel(char){
  var vowels = new Array('a','e','i','o','u');
  var isv = false;

  for(i = 0; i < vowels.length; i++){
    if(vowels[i] == char){
      isv = true;
      }
    }
  if( isv == true)
     return "This letter is a vowel.";
  else
     return "This letter is not a vowel.";
  }
}
alert(isVowel(char));

答案 2 :(得分:1)

它没有运行整个数组的原因是因为你返回一个值。这会在第一次迭代后停止该功能。

这是一个更简单的解决方案,可以识别元音而无需遍历数组:

function isVowel(char) {

    if (vowels.indexOf(char) >= 0) {
        return "The character \""+char+"\" is a vowel.";
    } else {
        return "The character \""+char+"\" is NOT a vowel.";
    }

}

var vowels = new Array('a','A','e','E','i','I','o','O','u','U');

alert(isVowel('e'));
alert(isVowel('f'));

indexOf功能基于answer here

这是working example (jsFiddle)