Tengo una matriz de objetos anidada y quiero convertirla en una lista de matrices como esta: esta es mi matriz de datos de objeto:

{
    "status": true,
    "message": "",
    "data": [{
            "pasien_docs": [{
                    "ecg": null,
                    "date": "2020-01-21T05:22:01.901Z"
                }, {
                    "ecg": 1.03,
                    "date": "2020-01-21T05:22:02.979Z"
                }, {
                    "ecg": 1.04,
                    "date": "2020-01-21T05:22:04.053Z"
                }, {
                    "ecg": 1.04,
                    "date": "2020-01-21T05:22:05.126Z"
                },
            ]
        }
    ]
}

Y quiero cambiar convertir a matriz de esta manera:

{
    "status": true,
    "message": "",
    "data": [
        [
            "2020-01-21T05:22:01.901Z",
            null
        ],
        [
            "2020-01-21T05:22:01.901Z",
            1, 03
        ]
        [
            "2020-01-21T05:22:01.901Z",
            1.04
        ]
        [
            "2020-01-21T05:22:01.901Z",
            1.04
        ]
    ]
 }

Intento usar el mapa para convertir un resultado como este:

result = result.map((u, i) => [
            u.pasien_docs[i].date,
            u.pasien_docs[i].ecg,
        ]);

Pero ¿por qué solo obtengo datos de resultados de una matriz, no cuatro datos? ayudame por favor, gracias ..

{
    "status": true,
    "message": "",
    "data": [
        [
            "2020-01-21T05:22:01.901Z",
            null
        ]
    ]
}
0
Rizka Rahayu 29 may. 2020 a las 15:14

3 respuestas

La mejor respuesta

¿Eso funcionaría para ti?

const src = {"status":true,"message":"","data":[{"pasien_docs":[{"ecg":null,"date":"2020-01-21T05:22:01.901Z"},{"ecg":1.03,"date":"2020-01-21T05:22:02.979Z"},{"ecg":1.04,"date":"2020-01-21T05:22:04.053Z"},{"ecg":1.04,"date":"2020-01-21T05:22:05.126Z"},]}]},

result = {
  ...src, 
  data: src.data[0].pasien_docs.map(Object.values)
}

console.log(result)
.as-console-wrapper{min-height:100%;}
6
Yevgen Gorbunkov 29 may. 2020 a las 12:37
let obj = {
  status: true,
  message: "",
  data: [
    {
      pasien_docs: [
        {
          ecg: null,
          date: "2020-01-21T05:22:01.901Z",
        },
        {
          ecg: 1.03,
          date: "2020-01-21T05:22:02.979Z",
        },
        {
          ecg: 1.04,
          date: "2020-01-21T05:22:04.053Z",
        },
        {
          ecg: 1.04,
          date: "2020-01-21T05:22:05.126Z",
        },
      ],
    },
  ],
};

var finalobj = JSON.parse(JSON.stringify(obj));
var innerobj = obj.data;
var intermd = innerobj.map((data) => {
  return data.pasien_docs;
});
finalarray = intermd[0].map((val) => {
  return [val.ecg, val.date];
});
console.log(obj);
finalobj.data[0].pasien_docs=finalarray;
console.log(finalobj);
1
RAJIB PANJA 29 may. 2020 a las 14:06

Si no desea utilizar el operador de propagación, esto también puede hacer el truco para usted

const source = {"status":true,"message":"","data":[{"pasien_docs":[{"ecg":null,"date":"2020-01-21T05:22:01.901Z"},{"ecg":1.03,"date":"2020-01-21T05:22:02.979Z"},{"ecg":1.04,"date":"2020-01-21T05:22:04.053Z"},{"ecg":1.04,"date":"2020-01-21T05:22:05.126Z"},]}]}

const result = Object.assign({}, source, {
  data: source.data[0].pasien_docs.map(Object.values)
})

console.log(result)
2
Shijil Narayan 29 may. 2020 a las 13:01