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
¿Cómo dividir una matriz de objetos en otras matrices en función de sus valores?

Necesito separar los datos de una matriz según la identificación del jugador. La base de datos que tengo se ve así:

 var database =[ { player: 1, level: 1, score: 20 }, { player: 2, level: 1, score: 25 }, { player: 3, level: 1, score: 7 }, { player: 1, level: 2, score: 25 }, { player: 2, level: 2, score: 7 } ]

Poco a poco se irán añadiendo nuevos objetos que contengan nuevos jugadores y desaparecerán los antiguos, ya que la base de datos está limitada a 40 entradas. Esto significa que la base de datos cambia dinámicamente.

Mi objetivo es empujar los objetos a nuevas matrices según la identificación del jugador. Así que el resultado tiene que verse así:

 var player1 = [ { player: 1, level: 1, score: 20 }, { player: 1, level: 2, score: 25 } ] var player2 = [ { player: 2, level: 1, score: 25 }, { player: 2, level: 2, score: 7 } ] var player3 = [ { player: 3, level: 1, score: 7 } ]
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Primero, puede convertir la matriz en un objeto para mejorar el acceso y luego puede asignar propiedades de objeto a las variables:

 const database = [ { player: 1, level: 1, score: 20 }, { player: 2, level: 1, score: 25 }, { player: 3, level: 1, score: 7 }, { player: 1, level: 2, score: 25 }, { player: 2, level: 2, score: 7 } ]; const { player1, player2, player3 } = database.reduce((acc, el) => { if (!('player' + el.player in acc)) acc['player' + el.player] = [el]; else acc['player' + el.player].push(el); return acc }, {}); console.log(player1, player2, player3);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Aunque es posible crear variables globales con nombres dinámicos, no es posible crear variables no globales con nombres dinámicos, y el entorno global ya está lo suficientemente lleno como para crear un montón de nuevas globales no es la mejor práctica.

En su lugar, utilice un Map :

 const playerArrays = new Map(); for (const entry of database) { const key = `player${entry.player}`; const array = playerArrays.get(key); if (!array ) { // Haven't seen this one yet, add a new array playerArrays.set(key, [entry]); } else { // We have the array, add to it array.push(entry); } }

Luego obtienes una matriz individual usando playerArrays.get("player1") y tal.

Ejemplo en vivo:

 var database = [{ player: 1, level: 1, score: 20 }, { player: 2, level: 1, score: 25 }, { player: 3, level: 1, score: 7 }, { player: 1, level: 2, score: 25 }, { player: 2, level: 2, score: 7 } ]; const playerArrays = new Map(); for (const entry of database) { const key = `player${entry.player}`; const array = playerArrays.get(key); if (!array ) { // Haven't seen this one yet, add a new array playerArrays.set(key, [entry]); } else { // We have the array, add to it array.push(entry); } } console.log("player1:", playerArrays.get("player1"));
 .as-console-wrapper { max-height: 100% !important; }

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