Tengo una estructura de datos de la siguiente manera:
ACTUALIZADO: tener más de un objeto en valores internos
const data = { "dates": [ "2015-09-09T00:00:00", "2015-09-09T00:10:00", "2015-09-09T00:20:00", ], "innerValues": [ { "name": "Name_1", "value": [ 104, 105, 107, ] }, { "name": "Name_2", "value": [ 656, 777, 145, ] }], }Me gustaría crear una salida como:
const outPut = [ ["2015-09-09T00:00:00", 'Name_1', 104 ], ["2015-09-09T00:10:00", 'Name_1', 105 ], ["2015-09-09T00:20:00", 'Name_1', 107 ], ["2015-09-09T00:00:00", 'Name_2', 104 ], ["2015-09-09T00:10:00", 'Name_2', 105 ], ["2015-09-09T00:20:00", 'Name_2', 107 ] ]Hasta ahora tengo esto, sé que también podría hacer esto con forEach, etc., pero como ejemplo.
const m = data.dates; let arr = []; for (var i = 0; i < m.length; i++) { arr[i] = new Array(m[i]); } console.log(arr);Esto da:
0: ['2021-09-09T00:00:00'] 1: ['2021-09-09T00:10:00'] 2: ['2021-09-09T00:20:00'] Que es donde quiero comenzar, sin embargo, si mapeo los inner.values y trato de crear una nueva matriz a partir de eso, no devuelve tres matrices separadas sino una.
const newArray = x.forEach(inner => console.log(new Array(inner)))Producción
0: (3) [104, 105, 107]¿Cómo podría lograr la estructura deseada anterior?
Puede usar reduce y map para recorrer valores internos y sus valores
const dates = data.dates const newArr = data.innerValues.reduce((acc, cur, i) => { acc.push(cur.value.map((value, i) => ([dates[i], cur.name, value]))); return acc; }, []).flat() console.log(newArr) <script> const data = { "dates": [ "2015-09-09T00:00:00", "2015-09-09T00:10:00", "2015-09-09T00:20:00", ], "innerValues": [{ "name": "Name_1", "value": [ 104, 105, 107, ] }, { "name": "Name_2", "value": [ 656, 777, 145, ] } ], } </script>