我正在尝试编写一个返回字符串

时间:2017-05-13 16:16:04

标签: javascript

这是我的代码,但我在控制台中未定义

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

4 个答案:

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

这里有几个问题:

  1. 您声明但不要调用函数http get
  2. 您的循环内部的返回语句vowels将在第一次迭代时返回。
  3. return count;循环中的条件是使用for,它应该使用>,否则<循环中的代码块永远不会以for运行永远不会超过i
  4. 使用正则表达式和&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);

http://jsbin.com/durizarobu/edit?console

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