这是我的代码,但我在控制台中未定义
function numOfVowels(string) {
let count = 0;
string = string.split('');
const vowels = function(string) {
for (let i = 0; i > string.length; i++) {
if (string[i].toLowerCase() === 'a' || string[i].toLowerCase() === 'e' || string[i].toLowerCase() === 'i' || string[i].toLowerCase() === 'o' || string[i].toLowerCase() === 'u'){
count+= 1;
}
return count;
}
};
}
console.log(numOfVowels('Yellow Submarine'));
答案 0 :(得分:2)
您没有从numOfVowels返回值,也没有必要拆分字符串,您可以迭代它,看看下面的代码:
function numOfVowels(string) {
let count = 0;
for (let i = 0; i < string.length; i++) {
if (string[i].toLowerCase() === 'a' || string[i].toLowerCase() === 'e' || string[i].toLowerCase() === 'i' || string[i].toLowerCase() === 'o' || string[i].toLowerCase() === 'u'){
count+= 1;
}
}
return count;
}
console.log(numOfVowels('Yellow Submarine'));
答案 1 :(得分:2)
这里有几个问题:
http get
。vowels
将在第一次迭代时返回。return count;
循环中的条件是使用for
,它应该使用>
,否则<
循环中的代码块永远不会以for
运行永远不会超过i
。使用正则表达式和&amp ;;进行元音计数的一些替代实现。 ES2015:
string.length
答案 2 :(得分:1)
如果你想要更短的实现(只是说):
countvowels=word=>word.split("").reduce((c,l)=>(["a","e","i","o","u"].indexOf(l.toLowerCase())+1)?++c:c,0);
答案 3 :(得分:0)
这是更正后的代码
第一个问题是i > string.length
它应该是i < string.length
for
循环第二个问题是return count;
它应该是在循环完成后第三个问题是vowels
函数永远不会在numOfVowels
内调用。
function numOfVowels(string) {
let count = 0;
string = string.split('');
const vowels = function(string) {
for (let i = 0; i < string.length; i++) {
if (string[i].toLowerCase() === 'a' || string[i].toLowerCase() === 'e' || string[i].toLowerCase() === 'i' || string[i].toLowerCase() === 'o' || string[i].toLowerCase() === 'u'){
count+= 1;
}
}
return count;
};
return vowels(string);
}
console.log(numOfVowels('Yellow Submarine'));