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

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

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 Report

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 Report

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