Estoy tratando de formatear mi conjunto de datos para que pueda ser utilizado por danfjo.js, que tiene el siguiente formato
json_data = [{ A: 0.4612, B: 4.28283, C: -1.509, D: -1.1352 }, { A: 0.5112, B: -0.22863, C: -3.39059, D: 1.1632 }, { A: 0.6911, B: -0.82863, C: -1.5059, D: 2.1352 }, { A: 0.4692, B: -1.28863, C: 4.5059, D: 4.1632 }] df = new dfd.DataFrame(json_data) df.print()
Mi solicitud POST devuelve un marco de datos en el siguiente formulario.
data 'A' : {0:'0.4612', 1:'0.5112',... 'B' : {0:'4.28283', 1:'-0.22863', ...
No estoy familiarizado con el lenguaje javascript. ¿Qué término usaría para esta remodelación y cómo lo haría?
Los datos API POST proporcionados en la pregunta no son válidos y están incompletos. Podría ser un objeto o una matriz de objetos o algo más. En cualquiera de los dos casos (el primero es formB
y el segundo formC
en el fragmento a continuación), el código generará una matriz (que coincide con la matriz asignada a la variable json_data
en la pregunta anterior) cuando el usuario presiona "y"
en el mensaje
const myTransform = (obj, retArr = false) => { const res = structuredClone( Array.isArray(obj) ? {...obj} : obj ); const colKeys = [...new Set( Object.values(res) .flatMap(ob => ( Object.keys(ob) )) )]; const rowKeys = [...new Set(Object.keys(res))]; const result = ( Object.fromEntries(colKeys.map(c => ([ [c], Object.fromEntries(rowKeys.map(r => ([ [r], res[r][c] ]))) ]))) ); return ( retArr ? Object.values(result) : result ); }; const formA = [{ A: 0.4612, B: 4.28283, C: -1.509, D: -1.1352 }, { A: 0.5112, B: -0.22863, C: -3.39059, D: 1.1632 }, { A: 0.6911, B: -0.82863, C: -1.5059, D: 2.1352 }, { A: 0.4692, B: -1.28863, C: 4.5059, D: 4.1632 } ]; const formB = { "A": { "0": 0.4612, "1": 0.5112, "2": 0.6911, "3": 0.4692 }, "B": { "0": 4.28283, "1": -0.22863, "2": -0.82863, "3": -1.28863 }, "C": { "0": -1.509, "1": -3.39059, "2": -1.5059, "3": 4.5059 }, "D": { "0": -1.1352, "1": 1.1632, "2": 2.1352, "3": 4.1632 } }; const formC = [{ "A": { "0": 0.4612, "1": 0.5112, "2": 0.6911, "3": 0.4692 }},{ "B": { "0": 4.28283, "1": -0.22863, "2": -0.82863, "3": -1.28863 }},{ "C": { "0": -1.509, "1": -3.39059, "2": -1.5059, "3": 4.5059 }},{ "D": { "0": -1.1352, "1": 1.1632, "2": 2.1352, "3": 4.1632 } }]; console.log( myTransform( formB, prompt('Press "y" for array') .toString() .toLowerCase() === 'y' ) );
.as-console-wrapper { max-height: 100% !important; top: 0 }