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

110
Vistas
Concepto de una variable estática dentro de una función cuando es llamada por string.replace

Tengo el siguiente código para hacer una validación de IP básica. En realidad, es solo académico y estoy usando este código para practicar el uso de String.replace (intencionalmente usando una expresión regular pobre/suelta):

 let potential_ips = [ '1.2.3.4.5', '12.34.45.56', '123.456.789.0', '1.2.3.4.5.6' ] var group_num = 0; function rePlace(m, g1) { group_num ++; if (parseInt(g1) > 255) { return '<invalid>' } else if (group_num > 4) { return '<invalid>' } else { return m; } } const regex = /(\d{1,3})\.?/g; for (ip of potential_ips) { group_num = 0; ip = ip.replace(regex, rePlace); console.log('222', ip); }

Lo que estoy tratando de hacer es cuando se llama a la función .replace para mantener un total acumulado de la cantidad de veces que se ha llamado para esa cadena en particular. Actualmente estoy usando una var en el alcance de nivel superior, pero me pregunto si hay una forma más limpia de hacer esto dentro de la función en sí. ¿Cuál sería un mejor enfoque para hacer esto?

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

0

Podría tomar un cierre sobre el conteo e inicializar con cero.

 const rePlace = count => m => { count++; if (parseInt(m) > 255 || count > 4) return '<invalid>'; return m; }, regex = /\d+(?=(\.|$))/g, potential_ips = ['1.2.3.4.5', '12.34.45.56', '123.456.789.0', '1.2.3.4.5.6']; for (let ip of potential_ips) { ip = ip.replace(regex, rePlace(0)); console.log('222', ip); }

about 4 years ago · Juan Pablo Isaza Denunciar

0

El concepto aquí se copia de la respuesta de Nina, pero aquí hay un enfoque en el que la función rePlace ahora devuelve una función vinculada con una variable inicializada a cero (¿quizás un poco como los números de la Iglesia?)

 function rePlace(count) { return function(m) { count ++; return (parseInt(m) > 255 || count > 4) ? '<invalid>' : m; } } const regex = /\d+(?=(\.|$))/g const potential_ips = ['1.2.3.4.5', '12.34.45.56', '123.456.789.0', '1.2.3.4.5.6'] ; for (let ip of potential_ips) { ip = ip.replace(regex, rePlace(0)); console.log('222', ip); }

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