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

151
Visualizações
¿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 Respostas
Responde à pergunta

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 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