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

144
Vistas
¿Cómo manejar una lógica diferente en un bloque if sin duplicar el código?

¿Cuál es la mejor manera de manejar un bloque if que hace algo pero los condicionales son diferentes?

Digamos que tengo esta función en JavaScript.

 const updateText1 = function (id) { const selector = $(id); selector.on('change', function () { const text = selector.val(); if(seen[text]) { // update some fields here } else { //more stuff here } }) }

Pero luego necesito hacer lo mismo dentro de la declaración if pero con un condicional diferente o similar

 const updateText2 = function (id) { const selector = $(id); selector.on('change', function () { const text = selector.val(); if(seen[text] || text.trim() === '') { // update some fields here } else { //more stuff here } }) }

entonces otras funciones se usan así

 obj1 = { test: function() { updateText1(this.id) } } obj2 = { test: function() { updateText2(this.id) } }

Sé que podría combinar la lógica, pero dado que ambos objetos a los que se adjunta esta función están manejando cosas ligeramente diferentes, estoy tratando de mantener mi código SECO y no repetir el cuerpo if varias veces. He intentado inyectar la lógica de esta manera

 obj2 = { // logic code here test: function() { updateText2(this.id, logic) } }

Pero esto da como resultado que el código no se actualice ya que el valor se obtiene a través de jQuery en el cambio.

¿Estoy pensando demasiado en esto, debería simplemente combinar la lógica o hay una mejor manera de organizar y manejar esto?

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

0

La solución más simple es pasar una devolución de llamada, y eso es probablemente lo que estabas tratando de hacer.

Ejemplo:

 const updateText = function (id, predicate) { const selector = $(id); selector.on('change', function () { const text = selector.val(); if(predicate(text)) { // update some fields here } else { //more stuff here } }) }

que entonces podría llamarse de la siguiente manera

 function canUpdate1(text) { return seen[text]; } function canUpdate2(text) { return seen[text] || text.trim() === ''; } updateText('id1', canUpdate1); updateText('id2', canUpdate2);
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