此代码有效,但我想知道是否有可能收到有关如何使此函数运行更快的建议。
我使用了正则表达式以及match方法,因为它们对我来说似乎很简单。
const vowelCount = str => {
let vowels = /[aeiou]/gi;
let result = str.match(vowels);
let count = result.length;
console.log(count);
};
该函数将显示字符串中的元音数量。
答案 0 :(得分:2)
简单的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");
前循环(定时):〜.070毫秒
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");
每次(定时):〜.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");