javascript - 如何改进元音计数器功能以提高效率?

标签 javascript

此代码有效,但我想知道是否有可能收到一些关于如何使此功能运行得更快的建议。

我使用了正则表达式和 match 方法,因为它们对我来说似乎很简单。

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

  console.log(count);
};

该函数将显示字符串中元音的数量。

最佳答案

一个简单的 for 循环或 foreach 稍微快一些,但它太小了,以至于你移到这里并没有真正看到太多好处。

但是这里有一些更快的选项。

您的代码(定时):~0.185 毫秒

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(定时):~.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(定时):~.074 毫秒

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

关于javascript - 如何改进元音计数器功能以提高效率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56433971/

相关文章:

javascript - <ul> 的 css 在回发 .net 页面时丢失

javascript - 使用 angular 和 bootstrap 创建一个 "responsive number"指令

javascript - Service Worker 可以预缓存 MySQL 数据库吗?

javascript - Fixed-data-table-2 - React 不更新表格单元格

javascript - 为什么 JavaScript 函数声明后不需要分号?

javascript - 添加具有不同查询的列表项

javascript - 遍历嵌套的 js 对象以查看搜索词/短语是否包含在其键中

javascript - 如何等待在 react.js 中呈现 View 直到 $.get() 完成?

javascript - 使用 ng-repeat 时如何获得元素的正确高度和偏移值?

c# - 仅将一个字符串从 $.ajax 发送到 C#