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

166
Vistas
Declaración de variables dinámicas. ¿Es este el método correcto?

Un poco nuevo en JS, así que sé amable :)

Estoy tratando de crear un programa que contenga más de 5000 valores booleanos que cambien dinámicamente en función de otras variables.

 const chars = "abcdefghijklmnopqrstuvwxyz0"; const charsC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0" const maxNum = 48; const maxTile = 6; var tile1, tile2, tile3, tile4, tile5, tile6 // test vars var tile4 = "A27" var t4a27 = false // this snippet will be in an interval loop for (let i = 1; i <= maxTile; ++i) { for (let n = 0; n < chars.length; ++n) { for (let j = 1; j <= maxNum; ++j) { // this obviously doesnt work var t[i][`${chars[n]}`][j]; // ^ ^ ^ if (tile[i] == `${charsC[n]}${j}`) { t[i][h][j] = true; console.log(t4a27) } else { t[i][h][j] = false; } } } }

Para aclarar, una palabra mejor que "tile" para las vars podría ser "sprite" porque es un punto en el sprite.

El concepto básico es que las variables de mosaico están diseñadas para generar su posición actual como un valor de cadena, por ejemplo, "A27". Luego, este ciclo tomará esa información y escaneará cada subconjunto de mosaicos para que sea verdadero/falso. Entonces, si el cuadrante inferior derecho del sprite está dentro de "A27", la salida sería t4a27 = verdadero

En la práctica, puedo hacer esto con solo una gran cantidad de código (más de 20,000 líneas), pero pensé que tenía que ser una forma más fácil que requiera mucho menos código.

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

0

Este probablemente no sea el enfoque correcto para su problema.

Si realmente necesita almacenar esta cantidad de variables, probablemente sea mejor colocarlas en un objeto como este:

 var tiles = {} var tileName = 'abc' // Dynamic setting: tile[tileName] = true // Dynamic reading: console.log(tile[tileName])

Me pregunto si realmente desea almacenar 5000 variables o si hay otra forma de calcularlas en el momento en que necesita tiempo, pero eso requiere un poco más de conocimiento del problema.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Javascript no tiene este tipo de capacidad para reflejar variables locales.
Lo que puede hacer es adjuntar todas esas variables a un objeto global y continuar con: Object.keys(your_object) and your_object[key_name_here] = ...

about 4 years ago · Juan Pablo Isaza Denunciar

0

Creo que deberías usar una matriz de 2 dim para esto. O use una matriz regular de booleanos con el tamaño apropiado y haga la magia del índice usted mismo.

Como dijiste, estás corriendo en coordenadas. A-27 es lo mismo que fila (1) + campo (27), considerando que A es 1

Si su campo es de 500x100, crea un Array como tal: let gamefield = Array(500*100);

Advertencia: no he probado esto para detectar errores de sintaxis, pero debería hacerse una idea.

 let gamefield = Array(500*100); // optional gamefield.fill(true); let row = idx => idx * 500; let posIdx = (r, c) => row(r) + c; // there is a sprite with a tiles property that returns // 4 index positions for the sprite's quadrants as [r,c] let quadrants = sprite.tiles.reportPositions() // filter the quadrants where the gamefield at r,c is true // this might also be a good case for some() instead of filter() let collisions = quadrants.filter(pos => return gamefield[posIdx(...pos)]); // if there is any of these, you can kill the sprite. if(collisions.length > 0) sprite.kill();
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