fastest way to find a vowel in a string (v3)

Revision 3 of this benchmark created on


Description

Test runner

Ready to run.

Testing in
TestOps/sec
some + includes
const str = "XlKdmHBJcVyZLoqiMwTNjPRYFsgbACthQWuOxDZlaeEjvIUKMprYSwnXTGcfboARHdqVJzmBLWpNMEysuKCgi";

const loop = () => {
    return str.split("").some((s) => "aeiouAEIOU".includes(s));
}

loop()
ready
some + manual lowercase
const str = "XlKdmHBJcVyZLoqiMwTNjPRYFsgbACthQWuOxDZlaeEjvIUKMprYSwnXTGcfboARHdqVJzmBLWpNMEysuKCgi";

const loop = () => {
	return str.split("").some((s) => {
		const t = s.toLowerCase();
		if(t == 'a' || t == 'e' || t == 'i' || t == 'o' || t == 'u') return true;
		return false
	});

}

loop();
ready
some + mapped lowercase
const str = "XlKdmHBJcVyZLoqiMwTNjPRYFsgbACthQWuOxDZlaeEjvIUKMprYSwnXTGcfboARHdqVJzmBLWpNMEysuKCgi";

const loop = () => {
	return str.split("").map((s) => s.toLowerCase()).some((s) => {

		if(s == 'a' ||s  == 'e' || s == 'i' || s == 'o' || s == 'u') return true;
		return false
	});

}
loop();
ready
for...of
const str = "XlKdmHBJcVyZLoqiMwTNjPRYFsgbACthQWuOxDZlaeEjvIUKMprYSwnXTGcfboARHdqVJzmBLWpNMEysuKCgi";
const vowels ="aeiouAEIOU";
const loop = () => {
  for (const char of str) {
    if (vowels.includes(char)) return true;
  }
  return false;
}
loop();
ready
spread + some
const str = "XlKdmHBJcVyZLoqiMwTNjPRYFsgbACthQWuOxDZlaeEjvIUKMprYSwnXTGcfboARHdqVJzmBLWpNMEysuKCgi";
const vowels ="aeiouAEIOU";
const loop = ()=>{
  return [...str].some(char => vowels.includes(char));
}
loop();
ready
for
const str = "XlKdmHBJcVyZLoqiMwTNjPRYFsgbACthQWuOxDZlaeEjvIUKMprYSwnXTGcfboARHdqVJzmBLWpNMEysuKCgi";
const vowels ="aeiouAEIOU";
const loop = () => {
  for (let i = 0; i < str.length; i++) {
    if (vowels.includes(str[i])) return true;
  }
  return false;
}
loop();
ready
Array.find
const str = "XlKdmHBJcVyZLoqiMwTNjPRYFsgbACthQWuOxDZlaeEjvIUKMprYSwnXTGcfboARHdqVJzmBLWpNMEysuKCgi";
const vowels ="aeiouAEIOU";
const loop = () => {
  return Boolean([...str].find(char => vowels.includes(char)));
}
loop();
ready
regex
const str = "XlKdmHBJcVyZLoqiMwTNjPRYFsgbACthQWuOxDZlaeEjvIUKMprYSwnXTGcfboARHdqVJzmBLWpNMEysuKCgi";


const loop = () => {
  return /[aeiou]/i.test(str);
}
loop();
ready
regex oneline
const str = "XlKdmHBJcVyZLoqiMwTNjPRYFsgbACthQWuOxDZlaeEjvIUKMprYSwnXTGcfboARHdqVJzmBLWpNMEysuKCgi";

const loop = () => /[aeiou]/i.test(str);

loop();
ready
set
const str = "XlKdmHBJcVyZLoqiMwTNjPRYFsgbACthQWuOxDZlaeEjvIUKMprYSwnXTGcfboARHdqVJzmBLWpNMEysuKCgi";
const vowelSet = new Set(['a','e','i','o','u','A','E','I','O','U']);

 const loop = () => {
  for (const char of str) {
    if (vowelSet.has(char)) return true;
  }
  return false;
}

loop();
ready
recursion
const str = "XlKdmHBJcVyZLoqiMwTNjPRYFsgbACthQWuOxDZlaeEjvIUKMprYSwnXTGcfboARHdqVJzmBLWpNMEysuKCgi";
const vowels ="aeiouAEIOU";
const loop = (s) => {
  if (!s) return false;
  return vowels.includes(s[0]) || loop(s.slice(1));
}

loop(str);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.