Javascript Problem – Find Vowels in String

The purpose of this exercise is to count the number of vowels in a string.  This is actually pretty easy using a regex expression.  I use the match() method to pick out the vowels [aeiou].  The “g” in “/gi” tells the expression to match all occurrences, not just the first one.  The “i” tells it to find either capital or lower case letters.

//OPTION 1 - REGEX EXPRESSION
function vowels(str) {
   const vowelMatch = str.match(/[aeiou]/gi);
   const length = vowelMatch === null ? 0 : vowelMatch.length;
   console.log ('str ', str, 'vowel ', vowelMatch, 'length ', length);
   return length;
}

I used a nested for loop to do it a longer way.

// OPTION 2 - USING FOR LOOPS
function vowels (str) {
   const vowelList = ["a","e","i","o","u"];
   const strArray = str.toLowerCase().split("");
   let vowelCount = 0;

   for (let i = 0; i<strArray.length; i++) {
      for (let j=0; j<vowelList.length; j++)
         if (strArray[i] === vowelList[j]) {
            vowelCount += 1;
         }
   }
   return vowelCount;
}

Finally, I used a for…of loop to complete it.  Not as easy as a regex expression, but more efficient than a nested loop.

// OPTION 3 - FOR...OF LOOP
function vowels(str) {
   const vowelList = ["a","e","i","o","u"];
   let vowelCount = 0;

   for (let char of str.toLowerCase()) {
      if(vowelList.includes(char)) {
         vowelCount++;
      }
   }
   return vowelCount;   
}

 

Leave a Reply

Your email address will not be published. Required fields are marked *