此代码有效,但我想知道是否有可能收到一些关于如何使此功能运行得更快的建议。
我使用了正则表达式和 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/