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

186
Visualizações
¿Hay una mejor manera de escribir largos bloques "if" de JavaScript?

El siguiente bloque if parece realmente ineficiente. Me imagino que hay una mejor manera de hacer esto.
Esto se utilizará para establecer parámetros en una biblioteca de gráficos. por ejemplo, posición de la cámara, posición de los objetos y otros.
Además, una solución genérica es bienvenida.

 const queryString = window.location.search; const urlParameter = new URLSearchParams(queryString); //this code is what my question is about V if (urlParameter.has("a")) { a = parseInt(urlParameter.get("a")); } if (urlParameter.has("b")) { b = parseInt(urlParameter.get("b")); } if (urlParameter.has("c")) { c = parseInt(urlParameter.get("c")); } if (urlParameter.has("d")) { d = parseInt(urlParameter.get("d")); } //^

Nota: soy bastante inexperto con JavaScript y lo uso principalmente para proyectos de pasatiempos.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

En lugar de almacenarlos como variables individuales, probablemente sea mejor almacenarlos en un objeto o instancia de mapa. Esto permite un enfoque más dinámico al establecer/obtener los valores.

 const allowedParameters = ["a", "b", "c", "d"]; const values = {}; for (const paramName of allowedParameters) { if (urlParameter.has(paramName)) { values[paramName] = parseInt(urlParameter.get(paramName)); } }

Luego puede acceder a los valores a través values.a (o values["a"] ), values.b , etc.


Si desea almacenarlos como variables individuales, puede usar la asignación de desestructuración, esto supone que las variables no están definidas de antemano.

 const [a, b, c, d] = ["a", "b", "c", "d"].map((paramName) => { if (urlParameter.has(paramName)) { return parseInt(urlParameter.get(paramName)); } });

Lo anterior establecerá a , b , c y d independientemente de su presencia en urlParameter . Si no están presentes, se establecerán en undefined , porque la devolución de llamada map() devuelve undefined si no está presente (no tiene valor de retorno).

Lo que significa que esta solución no funcionará si a , b , c y d ya están definidos, y solo desea redefinirlos si están presentes.


Esto se puede resolver con la solución a continuación, pero esto solo funcionará al redefinir variables, no si las está inicializando por primera vez.

 [a, b, c, d] = Object.entries({ a, b, c, d }).map((paramName, oldValue) => { if (urlParameter.has(paramName)) { return parseInt(urlParameter.get(paramName)); } else { return oldValue; } });
about 4 years ago · Juan Pablo Isaza Relatório

0

Puede usar una matriz con los nombres de los parámetros de entrada y repetirla.

Pero como no puede asignar nombres de variables dinámicas en JavaScript, deberá cambiar ligeramente su salida para usar un objeto:

 const allowedParameters = ['a', 'b', 'c', 'd']; const parsedParameters = {}; allowedParameters.forEach((key)=> { if (urlParameter.has(key)) { parsedParameters[key] = parseInt(urlParameter.get(key)); } }); // To use the values just access each key in the parsedParameters object: console.log(parsedParameters.a);
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