Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

121
Visualizações
mejorar la función de reemplazo en javascript

Estoy tratando de realizar esta función de una manera más limpia, ¿me podrías dar una mano?

 function removeAccents(text) { var text = text.replace(/á/g, "a").replace(/é/g, "e").replace(/í/g, "i").replace(/ó/g, "o").replace(/ú/g, "u"); return cadenaTexto; }
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Su código ya me parece bastante limpio, tal vez podría poner los reemplazos en líneas separadas, pero es fácil de entender.

No estoy seguro de si el siguiente código es más limpio, pero solo estoy aprovechando cómo puede pasar una función de reemplazo a String.prototype.replace

Para que pueda conservar los caracteres que desea reemplazar con cuáles en un objeto separado y simplemente pasarlos.

 function removeAccents(text) { const replacements = { á: "a", é: "e", í: "i", ó: "o", ú: "u" }; return text.replace(/[áéíóú]/g, match => replacements[match]); } console.log(removeAccents("áéíóú"));

about 4 years ago · Juan Pablo Isaza Relatório

0

EDITAR: @Ryan White's Solution, usar la devolución de llamada de coincidencia es, con mucho, la solución más rápida, ya que va del 20% para cadenas más cortas a más del 100% para cadenas más largas, más rápido que las dos soluciones a continuación, ya que permite evitar bucles:

 const replacements = { à: 'a', è: 'e', ì: 'i', ò: 'o', ù: 'u' }; function removeAccents3(text) { const accs = Object.keys(replacements).join('') return text.replace( new RegExp(`[${accs}]`, 'gi'), (match) => replacements[match] ); } console.log(removeAccents3('àèbgòè+àòètrysàùì')); //aebgoe+aoetrysaui // Performance : 69059.40 ops/s

Propongo un par de enfoques, tienen rendimientos similares, aunque la sustitución a través de RegExp es más eficaz, con cadenas cortas no lo notas, pero con las más largas tienes un +20% de rendimiento.

 const accents = [ { val: 'à', repl: 'a', }, { val: 'è', repl: 'e', }, { val: 'ì', repl: 'i', }, { val: 'ò', repl: 'o', }, { val: 'ù', repl: 'u', }, ]; const removeAccents = (text) => { for (const a of accents) text = text.replace(new RegExp(a.val, 'ig'), a.repl); return text; }; console.log("First test:", removeAccents('àèbgòè+àòètrysàùì')); //aebgoe+aoetrysaui // Performance : 46168.04 ops/s // 2 const accents2 = { à: 'a', è: 'e', ì: 'i', ò: 'o', ù: 'u', }; const removeAccents2 = (text) => text.split("").map(c => accents2[c] ? accents2[c] : c).join("") console.log("Second test:", removeAccents2('àèbgòè+àòètrysàùì')); //aebgoe+aoetrysaui // Performance : 45910.35 ops/s

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda