• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

329
Vistas
¿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' ]
almost 3 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

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.

almost 3 years ago · Juan Pablo Isaza Denunciar

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.

almost 3 years ago · Juan Pablo Isaza Denunciar

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","*"))

almost 3 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda