我的 for 循环有什么问题

What is wrong with my for loop?

本文关键字:什么 问题 循环 for 我的      更新时间:2023-09-26

我是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"是它唯一识别为元音的字母。有人可以指出它没有在整个阵列中运行的原因吗?

提前致谢

你得到一个明确的"是"或"否"答案之前,你不应该回来。

请尝试以下操作:

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));
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));

它没有贯穿整个数组的原因是因为你返回了一个值。这将在第一次迭代后停止函数。

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

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功能基于此处的答案。

这是一个工作示例(jsFiddle)。