lo siento si el título es un poco engañoso, soy nuevo en js, así que no sé cómo explicar lo que quiero hacer correctamente, así que mostraré mi código y lo que espero en su lugar.
así que tengo esta matriz de objetos
const mi_array = [{ text: "1st title", col2015: 81.8, col2016: 86.4, col2017: 67.3, col2018: 70.8, col2019: 67.6 },{ text: "2nd title", col2015: 90.8, col2016: 67.4, col2017: 39.3, col2018: 50.8, col2019: 95.6 }];necesito algo como esto
const new_array = [{ name: "1st title", data: [81.8,86.4,67.3,70.8,67.6] },{ name: "2nd title", data: [90.8,67.4,39.3,50.8,95.6] }];He estado buscando cómo hacerlo, pero esto es todo lo que encontré hasta ahora y se acerca a lo que necesito, pero aún no está del todo allí.
const new_array = []; mi_array.forEach(value => { for (let key in value) { new_array.push(value[key]); } }); console.log(new_array);Pero mi salida es esta
["1st title", 81.8, 86.4, 67.3, 70.8, 67.6, "2nd title", 90.8, 67.4, 39.3, 50.8, 95.6];Puede map a través de la matriz y crear un nuevo objeto, donde la propiedad data son los valores de propiedad numéricos del original.
const mi_array=[{text:"1st title",col2015:81.8,col2016:86.4,col2017:67.3,col2018:70.8,col2019:67.6},{text:"2nd title",col2015:90.8,col2016:67.4,col2017:39.3,col2018:50.8,col2019:95.6}]; const result = mi_array.map(e => ({ name: e.text, data: Object.values(e).filter(e => typeof e == 'number') })) console.log(result)