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

121
Vistas
Vuelva a formatear una matriz de objetos en Javascript en formato de matriz personalizado por ID de propiedad

Tengo problemas para reformatear una matriz de objetos en Javascript. Tengo una matriz que se ve así:

 [ { "deviceid": 42, "x": "2022-03-26T00:00:18", "y": 17.8, }, { "deviceid": 42, "x": "2022-03-26T00:01:18", "y": 17.8, }, { "deviceid": 43, "x": "2022-03-26T00:02:18", "y": 17.8, { "deviceid": 43, "x": "2022-03-26T00:02:18", "y": 17.8, }]

Quiero remodelarlo para que el nuevo formulario sea un registro por ID de dispositivo y todos los valores x e y en la misma fila.

 [ { "deviceid": 42, "x": ["2022-03-26T00:00:18","2022-03-27T00:00:18"], "y": [17.8, 15.6], }, { "deviceid": 43, "x": ["2022-03-26T00:01:18","2022-03-27T00:00:18"], "y": [17.8, 19.1], }]

¿Cómo puedo hacer que esto suceda?

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

0

Puede usar reduce() para hacer la reducción de sus valores usando un objeto JavaScript. Después de la reducción, obtenga los valores del objeto usando Object.values() .

 const data = [ { deviceid: 42, x: "2022-03-26T00:00:18", y: 17.8, }, { deviceid: 42, x: "2022-03-26T00:01:18", y: 15.6, }, { deviceid: 43, x: "2022-03-26T00:02:18", y: 17.8, }, { deviceid: 43, x: "2022-03-26T00:02:18", y: 19.1, }, ]; const result = data.reduce((devices, device) => { // check if we have encountered this decive before using the deviceId if (!devices.hasOwnProperty(device.deviceid)) { // we have not: create an key-value pair using device ID as key and device info as value // use an array for x and y devices[device.deviceid] = { deviceId: device.deviceid, x: [device.x], y: [device.y], }; } else { // we have seen this device before // get the device value using the key (deviceId) and push new x and y values to it const curDev = devices[device.deviceid]; curDev.x.push(device.x); curDev.y.push(device.y); } // return JS object of devices for next iteration/ result return devices; }, {}); console.log(Object.values(result));

Tenga en cuenta: creo que la entrada que proporcionó en su pregunta contiene algunos errores, probablemente al copiar/pegar, ya que la salida esperada contiene valores que no están en la entrada en absoluto. Cambié los valores de y en la entrada para mostrarle que la salida es realmente lo que espera.

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