练习:编写一个带字符的函数(即长度为1的字符串),如果是元音则返回true,否则返回false。
我的代码:
var findVowel = function(letter) {
var vowels = ["a", "e", "i", "o", "u"];
for(var i in vowels){
if(letter === i){
return true;
} else {
return false;
}
}
};
findVowel("e");
我研究过高低,对我来说代码看起来好像应该但是如果给出元音,它会返回false。
答案 0 :(得分:7)
不要在数组中使用for..in循环。 i
是索引而不是值。此外,您的代码只会检查字母“a”。它永远不会进入循环的下一次迭代,因为它在第一次迭代后总是返回true或false。
你需要将return false移动到循环之后,这样它只有在对所有元音进行检查后才会返回false。
您还应该切换到更“传统”的for..loop风格。
我甚至不会进入整个“是''元音?”问题“:)
这是修正后的代码:
var findVowel = function(letter) {
var vowels = ["a", "e", "i", "o", "u"];
for(var i = 0; i < vowels.length; i++){ // don't use for...in with Arrays
if(letter === vowels[i]){// Use array indexing instead
return true;
}
}
return false;// This is after the loop
};
答案 1 :(得分:0)
i
是vowels
迭代器中的当前索引,而不是当前元音,因此:
if(letter === vowels[i]) ...
答案 2 :(得分:0)
只需使用它,无需循环任何内容:
var findVowel = function(letter) {
return "aeiou".indexOf(letter) != -1; // return if the letter is found in "aeiou"
};
或者,我个人的最爱:
var findVowel = function(letter) {
return ~"aeiou".indexOf(letter);
};
如果在字符串中找不到参数, .indexOf()
将返回-1
,否则,它会返回参数在字符串中的位置(从0
到string length - 1
的int )。
因此,在第一个示例中,如果.indexOf()
返回-1
,则该字母不是元音。如果它返回任何其他值,则为。 (因此!= -1
)。
~
是一个按位NOT,反转该输出:
-1
变为0
- &gt;虚假的价值
X
(其中X为正数或0)变为-(X+1)
- &gt;真实的价值。
这样,如果字母是元音,函数将返回true-ish,如果不是,则返回false-ish。
如果您需要“严格”布尔输出,请将return
替换为:
return !!~"aeiou".indexOf(letter);
!!
是一个双布尔NOT
(因此,将布尔值反转两次),这会将True-ish值转换为true
和false-ish值( 0
} false
。
答案 3 :(得分:0)
您只将元音中的第一个元素与给定的字母进行比较并返回该结果。相反,你必须通过你的整个阵列,看看你的元音是否匹配。
答案 4 :(得分:0)
您还可以将.charAt
方法和.toLowerCase
方法一起使用。
function vowelChecker(x) {
// vowelChecker will grab the first letter (character)...
var firstChar = x.toLowerCase().charAt(0);
// Then check if that first letter is a vowel.
if (firstChar === "a" || firstChar === "e" || firstChar === "i" || firstChar === "o" || firstChar === "u") {
// If so... it will log true.
console.log(true);
} else {
// If not... it will log false.
console.log(false);
}
}
答案 5 :(得分:0)
尝试
function checkIfVowel(vowel) {
return /[aeiouAEIOU]/.test(vowel);
}
此函数使用一个字符参数,并通过正则表达式检查它是否是元音,最后返回相应的值(真或假)。