Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

241
Views
¿Cómo devolver el número de vocales en una cadena en Javascript?

Estaría encantado si alguien pudiera mirar mi código. He estado tratando de devolver el número total de vocales en una cadena dada. Quiero que mi código tenga en cuenta los casos de la letra , los espacios vacíos en la cadena y también la ausencia de vocal . Creo que hay algo mal con mi declaración if que devuelve 0 para la cadena de entrada "Crypt" y "Crypto"

 function countVowels(str) { let count = 0; let arr = str.toLowerCase().split("") let vowels = ["a","e","i","o","u"] console.log(arr) for (let i = 0; i < str.length; i++){ if (arr[i].includes(vowels)){ count++ } else { return 0 } } return count } console.log(countVowels("Crypto")) console.log(countVowels("Crypt"))
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Hay varios problemas con el código que ha producido aquí.

La primera es que, para cada letra de la cadena, está comprobando si la letra incluye la matriz de vocales, lo que nunca será cierto. Efectivamente has escrito esto...

 "a".includes(["a", "e", "i", "o", "u"])

que es al revés.

En su lugar, debe preguntarle a la matriz si incluye la letra dada, de esta manera:

 ["a", "e", "i", "o", "u"].includes("a") // true ["a", "e", "i", "o", "u"].includes("s") // false

El segundo problema es que, en tu rama else , return 0 . Esto detendrá inmediatamente su función y devolverá 0 la primera vez que encuentre una no vocal. En lugar de return 0 , puede simplemente no realizar ninguna acción y descartar la rama else por completo.

En última instancia, su ciclo debería verse así:

 for (let i = 0; i < str.length; i++){ if (vowels.includes(arr[i])) { count++ } }
about 4 years ago · Juan Pablo Isaza Report

0

En su bucle for , la expresión:

 arr[i].includes(vowels) // It should be... vowels.includes(arr[i])

.includes() es un método String y Array, por lo que puede ser confuso para un novato. En general, desea prefijar el método con una matriz o cadena que sirve como filtro (la cadena/matriz utilizada para comparar con el valor de entrada).

Además, la declaración else acortará su función porque return finaliza toda la función de inmediato. La instrucción if es suficiente, si no hay una coincidencia, el bucle for simplemente la ignorará.

 function countVowels(str) { let count = 0; let arr = str.toLowerCase().split(""); let vowels = ["a", "e", "i", "o", "u"]; for (let i = 0; i < str.length; i++) { if (vowels.includes(arr[i])) { count++ } } return count; } console.log(countVowels("Crypto")) console.log(countVowels("Crypt"))

Como una alternativa más eficiente, use .filter() como tal y devuelva V.length :

 const V = array.filter(char => vowels.includes(char)); 

 function countVowels(str) { let array = str.toLowerCase().split(""); const vowels = ["a", "e", "i", "o", "u"]; const V = array.filter(char => vowels.includes(char)); return V.length; }; console.log(countVowels("Crypto")) console.log(countVowels("Crypt"))

about 4 years ago · Juan Pablo Isaza Report

0

Hay muchas soluciones para esto.

Creo que recién estás comenzando, así que espero que lo siguiente te ayude.

 function countVowels(str) { let count = 0; let arr = str.toLowerCase().split(""); for (let i = 0; i < str.length; i++){ if (arr[i] === "a" || arr[i] === "e" || arr[i] === "i" || arr[i] === "o" || arr[i] === "u")){ //same as count++ but good practice count+=1 } else { return 0 } } return count } console.log(countVowels("Crypto")) console.log(countVowels("Crypt"))
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!