Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

180
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!