Así que se me ocurrió esto, aunque el contador no funciona correctamente.
const stringVowel = ('hottentottententententoonstellingsbedrijfsacademie') const letters = stringVowel.split(''); const numberOfVowels = arr => arr.map(num => { let counter = 0; if (num === 'a' || num === 'o' || num === 'u' || num === 'e' || num === 'i') { counter++ } console.log(counter) }) numberOfVowels(letters)Una opción es utilizar el método de match de cadenas y proporcionar una expresión regular con todas las vocales:
const withVowels = 'hottentottententententoonstellingsbedrijfsacademie'; const noVowels = 'wqdftzsqq'; function numberOfVowels(str) { return str.match(/[aeiou]/ig)?.length ?? 0; } console.log(numberOfVowels(withVowels)); console.log(numberOfVowels(noVowels));Editar: actualizado a una solución más robusta basada en comentarios