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

94
Vistas
¿Cómo puedo obtener datos de una matriz de objetos con una clave coincidente y combinar los otros resultados en una matriz?

quiero el resultado a continuación

Dada una matriz

 [{ "date": "JAN", "value": 5, "weight": 3 }, { "date": "JAN", "value": 4, "weight": 23 }, { "date": "FEB", "value": 9, "weight": 1 }, { "date": "FEB", "value": 10, "weight": 30 }]

y una 'fecha' clave
transformarlo en la siguiente salida:

 [{ "date": "JAN", "value": [5, 4], "weight": [3, 23] }, { "date": "FEB", "value": [9, 10], "weight": [1, 30] }]

cualquier ayuda sera muy apreciada gracias de antemano

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

0

  • Usando Array#reduce , itere sobre la matriz mientras actualiza un Map donde la primaryKey es la key y el objeto agrupado es el value
  • En cada iteración:
    • obtener el valor de la clave principal y las propiedades restantes del objeto actual
    • Usando Object#entries , obtenga la lista de pares de las propiedades
    • Usando Map#get , obtenga el valor actual de la clave principal si existe
    • Si es así, necesitamos iterar sobre las entradas usando Array#forEach y actualizar las matrices
    • Si no, creamos el objeto inicial y agregamos un nuevo par usando Map#set
  • Finalmente, usando Map#values , puede obtener la lista de objetos agrupados

 const transform = (arr, primaryKey) => [... arr.reduce((map, e) => { const { [primaryKey]: key, ...props } = e; const currentProps = Object.entries(props); const item = map.get(key); if(item) { currentProps.forEach(([ k, v ]) => item[k] = [...(item[k] ?? []), v]); } else { const obj = currentProps.reduce((acc, [ k, v ]) => ({ ...acc, [k]: Array.isArray(v) ? [...v] : [v] }), { primaryKey: key }); map.set(key, obj); } return map; }, new Map) .values() ]; console.log( transform([ { "date": "JAN", "value": 5, "weight": 3 }, { "date": "JAN", "value": 4, "weight": 23 }, { "date": "FEB", "value": 9, "weight": 1 }, { "date": "FEB", "value": 10, "weight": 30 } ], 'date') ); console.log( transform([ { type: '200', api: [ '/counter' ] }, { type: '400', api: [ '/counter' ] }, { type: '500', api: [ '/counter', '/product' ] } ], 'type') );

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