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

467
Views
¿Cómo reemplazo las vocales de un carácter con * y obtengo una matriz de todas las posibilidades en js?

Supongamos que tengo una palabra "FadTheChad" (o cualquier palabra que tenga vocales) y quiero que las vocales se reemplacen con "*" y devuelva todas las posibilidades (¿subconjuntos? No estoy seguro de cómo podría describirlo) de la palabra en una matriz.

Intenté usar String.replace() en toda la cadena que me dio F*dTh*Ch*d . Luego intenté recorrer la cadena y hacer .replace() nuevamente, lo que devolvió F*dTheChad, FadTh*Chad, FadTheCh*d .

¿Hay alguna forma de que pueda obtener algo como

 [ 'F*dTh*Ch*d', 'F*dTheChad', 'F*dTh*Chad', 'F*dTheCh*d', 'FadTh*Chad', 'FadTh*Ch*d', 'FadTheCh*d' ]
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Prueba esto:

 function getPossibilities(word) { let vowels = ['a', 'e', 'i', 'o', 'u']; // 'y'? let positions = []; for (let i = 0; i < word.length; i++) { if (vowels.indexOf(word[i]) !== -1) positions.push(i); } let result = [], count = 2 ** positions.length; for (let i = 0; i < count; i++) { let newWord = [...word]; for (let j = 0; j < positions.length; j++) { if ((i >> j) & 1) newWord[positions[j]] = '*'; } result.push(newWord.join('')); } return result; }

Convierto la palabra en una matriz porque en JS las cadenas son inmutables, por lo que no podría modificar índices como este.

about 4 years ago · Juan Pablo Isaza Report

0

Respuesta actualizada

Bien, ahora que entiendo la pregunta antes de responderla (consulte el original a continuación para obtener una explicación), esto también se puede responder con una simple recursión:

 const addAsterisks = ([c,...cs]) => c == undefined ? [''] : addAsterisks (cs) .flatMap ( (w) => 'aeiou' .includes (c) ? [c + w, '*' + w] : [c + w] ) console .log (addAsterisks ('FadTheChad'))
 .as-console-wrapper {max-height: 100% !important; top: 0}

Si la cadena está vacía, devolvemos una matriz que contiene la cadena vacía. De lo contrario, recurrimos al resto de la cadena y, para cada resultado, devolvemos una matriz con nuestro carácter actual antepuesto al resultado y, si el carácter actual es una vocal, un asterisco antepuesto al resultado.

Respuesta original

( Esto respondió a una pregunta completamente diferente, en base a mi lectura errónea. Todavía es interesante por derecho propio).

Una simple recursividad lo hace fácil:

 const addVowels = (str) => str .indexOf ('*') < 0 ? str : ['a', 'e', 'i', 'o', 'u'] .flatMap (v => addVowels (str .replace ('*', v))) console .log (addVowels ('F*dTh*Ch*d'))
 .as-console-wrapper {max-height: 100% !important; top: 0}

Si nuestra cadena no contiene asteriscos, hemos terminado y simplemente la devolvemos.

Si tiene un asterisco, flatMap ping a los resultados de reemplazarlo con cada una de las vocales y repetirlo en la cadena resultante.


Para la próxima vez, incluya un código de muestra para lo que ha probado.

about 4 years ago · Juan Pablo Isaza Report

0

Entonces, la pregunta es encontrar las vocales, luego encontrar todas las combinaciones posibles reemplazándolas con estrella ... bastante bien, así que aquí está mi intento

 function vowelOptions(text,replacer){ let isVowel={a:1,e:1,i:1,o:1,u:1} let vowels=[], toReturn=[] let data=text.split('') data.forEach((letter,i)=>{ if(isVowel[letter]){vowels.push(i)} //location of vowel stored }) for(let i=1;i<Math.pow(2,vowels.length);i++){ //Math.pow(2,vowels.length) are the number of vowel possibilities //i=1 and NOT 0 because default text is now allowed in return let dataOption=[...data] //a clone with a possible combination let combination=i.toString(2).split('').reverse() //the ones that will be '1' tell me where to put the replacer combination.forEach((bool,j)=>{ if(bool=='1'){dataOption[vowels[j]]=replacer} //vowels to replace in this combination replaced thanks to vowel locations saved above }) toReturn.push(dataOption.join('')) } return toReturn } //now watch it work >:} console.log(vowelOptions("FadTheChad","*"))

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!