简体   繁体   中英

How can I improve this vowel counter function for higher efficiency?

This code works, but I was wondering if it was possible to receive some advice on how to make this function run faster.

I have used regular expressions as well as the match method because they seem straightforward to me.

const vowelCount = str => {
  let vowels = /[aeiou]/gi;
  let result = str.match(vowels);
  let count = result.length;

  console.log(count);
};

The function will display the number of vowels inside a string.

A simple for loop or foreach is marginally faster but it is so minor that you aren't really looking at much benefit by moving here.

However here are some faster options.

Your Code (timed): ~0.185 ms

 const vowelCount = str => { let vowels = /[aeiou]/gi; let result = str.match(vowels); return result.length; }; var t0 = performance.now(); vowelCount("aSdDDDdasDD"); var t1 = performance.now(); console.log("Call took: " + (t1 - t0) + " MS"); 


For-Loop (timed): ~.070 ms

 const vowelCount = str => { var vowels = 'aeiouAEIOU'; var count = 0; for(var x = 0; x < str.length ; x++) { if (vowels.indexOf(str[x]) !== -1){ count += 1; } } return count; }; var t3 = performance.now(); vowelCount("aSdDDDdasDD"); var t4 = performance.now(); console.log("Call took: " + (t4 - t3) + " MS"); 


For-Each (timed): ~.074 ms

 const vowelCount = str => { var vowels = 'aeiouAEIOU'; var count = 0; Array.from(str).forEach((c) => { if(vowels.indexOf(c)) { count++; } }); return count; }; var t3 = performance.now(); vowelCount("aSdDDDdasDD"); var t4 = performance.now(); console.log("Call took: " + (t4 - t3) + " MS"); 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM