Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

82
Vistas
Asesoramiento sobre la manipulación de matrices

de mi código a continuación, la constante myText almacena una cadena que tiene variables dinámicas en la forma {{nombre}}, {{edad}}, estoy tratando de usar expresiones regulares para encontrar esas variables dinámicas para reemplazarlas con valores reales. Tengo una matriz que almacena la variable esperada y su valor correspondiente. Necesito recorrer la matriz y buscar la matriz[elemento].variable de la cadena myText, y luego reemplazar todas las variables encontradas, con la matriz[elemento].valor correspondiente. Todavía no soy bueno en arreglos, y todo lo que sabía era el mapa, foreach, funciones, pero estos no me están dando los resultados.

 const text = ' hello {{name}}, you have made {{age}} now, and you are a {{gender}}' const expects = [ { expected: /{{name}}/, wanted: "Mary" }, { expected: /{{age}}/, wanted: 30 }, { expected: /{{gender}}/, wanted: "girl" }, ]; const result = expects.map(item => { return ( text.replace( item.expected, item.wanted ) ) })

usando la función de mapa, obtengo esto como un registro de consola

 ['<p>hello Mary, you have made {{age}} and you are now a {{gender}}</p>', '<p>hello {{name}}, you have made 30 and you are now {{gender}}</p>', '<p>hello {{name}}, you have made {{age}} and and you are now a girl</p>']

Esperaba

 hello Mary, you have made 30 and you are now a girl

amablemente ayuda

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Esta puede ser una posible solución para lograr el objetivo deseado.

Fragmento de código

 const text = ' hello {{name}}, you have made {{age}} now, and you are a {{gender}}' const expects = [ { expected: /{{name}}/, wanted: "Mary" }, { expected: /{{age}}/, wanted: 30 }, { expected: /{{gender}}/, wanted: "girl" }, ]; console.log( expects.reduce( (acc, {expected, wanted}) => (acc.replace(expected, wanted)), text ) );

Explicación

  • Iterar sobre las expects usando .reduce()
  • Mantenga acc como el acumulador/agregador y configúrelo en text inicialmente
  • Desestructurar el iterador para acceder directamente a los accesorios expected y wanted
  • Use .replace() en el acumulador para efectuar los cambios/reemplazos deseados
about 4 years ago · Juan Pablo Isaza Denunciar

0

expects el objeto esperado en una sola expresión regular, y luego necesita llamar a replace solo una vez:

 const expects = [ { expected: /{{name}}/, wanted: "Mary" }, { expected: /{{age}}/, wanted: 30 }, { expected: /{{gender}}/, wanted: "girl" }, ]; // Prepare const regex = RegExp(expects.map(({expected}) => expected.source).join('|'), "g"); const trans = Object.fromEntries(expects.map(({expected, wanted}) => [expected.source, wanted])); // Example const text = ' hello {{name}}, you have made {{age}} now, and you are a {{gender}}' const result = text.replace(regex, m => trans[m]); console.log(result);

Alternativamente, si se pretende que todas las "variables" estén codificadas como {{ }} , entonces podría buscar ese patrón genérico y realizar la búsqueda:

 const expects = [ { expected: /{{name}}/, wanted: "Mary" }, { expected: /{{age}}/, wanted: 30 }, { expected: /{{gender}}/, wanted: "girl" }, ]; // Prepare const trans = Object.fromEntries(expects.map(({expected, wanted}) => [expected.source, wanted])); // Example const text = ' hello {{name}}, you have made {{age}} now, and you are a {{gender}}' const result = text.replace(/{{.*?}}/g, m => trans[m] ?? m); console.log(result);

about 4 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 Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda