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

199
Vistas
¿Cómo puedo guardar datos en diferentes arreglos dependiendo de características específicas?

Tengo una matriz con más de 50 entradas en forma de objetos, que me gustaría guardar según el ID del elemento para poder aplicarles ciertos cálculos. Por ejemplo, me gustaría sumar la hora de todas las entradas con el Id. de artículo "Las5241Wz".


Dado que la matriz puede cambiar dinámicamente, no puedo analizarla manualmente. ¿Cómo puedo separar los datos de antemano de acuerdo con su ID de elemento y colocarlos en nuevas matrices? El Array real contiene hasta 16 objetos con la misma ID.

 var data= [] data = [ //...objects { itemId: "Las5241Wz", time: 10 }, { itemId:"Bos1239Zf", time: 11 }, { itemId:"Las5241Wz", time: 15 }, { itemId:"Bos1239Zf", time: 21 } //...more objets ]

La solución para esto debería verse así:

 var Item1 = [ { itemId: "Las5241Wz", time: 10 }, { itemId:"Las5241Wz", time: 15 }, ] var Item2 = [ { itemId:"Bos1239Zf", time: 11 }, { itemId:"Bos1239Zf", time: 21 } ]
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

A menos que tenga una razón de rendimiento para mantener las listas por separado, la respuesta es que puede almacenar la lista de ID como un Set y usar array.filter cuando desee obtener la lista que es solo para esa ID.

 Set s = new Set(); for (let i = 0; i < data.length; i++) { s.add(data[i].itemId); } var createFilterFunc(id) { return function(elem) { return elem.itemId == id; } } var items = data.filter (createFilterFunc("Las5241Wz"));
about 4 years ago · Juan Pablo Isaza Denunciar

0

Aquí hay otra solución que crea un objeto con las propiedades "elemento1", "elemento2" y así sucesivamente a partir del objeto dado:

 const data = [ //...objects { itemId: "Las5241Wz", time: 10 }, { itemId:"Bos1239Zf", time: 11 }, { itemId:"Las5241Wz", time: 15 }, { itemId:"Bos1239Zf", time: 21 } //...more objets ] console.log( Object.values( data.reduce((o,e)=>((o[e.itemId]=o[e.itemId]||[]).push(e),o),{})) .reduce((o,c,i)=>(o["item"+(i+1)]=c,o),{}) );

Esta es una "una sola línea" y por esa razón no es tan fácil de leer. Entonces, probablemente no sea la versión que pondrías en tu código de producción.

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