¡Hola a todos! Estamos de vuelta con un nuevo artículo sobre JavaScript. Esta vez, exploraremos un tema fundamental pero a menudo repetitivo: cómo trabajar con JSON. Vamos a sumergirnos directamente en el código, donde mostraremos cómo transponer valores de filas a columnas en un arreglo JSON.
¿Qué es la Transposición de Datos?
La transposición de datos implica cambiar la orientación de los datos, es decir, convertir filas en columnas y viceversa. En este artículo, te mostraré cómo hacerlo usando JavaScript.
La Función transpuesta
La función transpuesta se encarga de transponer los valores de un objeto JSON. A continuación, se explica cómo funciona esta función paso a paso:
Código de la Función
/** * Función transpuesta: Transpone valores de filas a columnas en un arreglo JSON. * @param {Object} obj - El objeto JSON que contiene los datos a transponer. * @returns {Array} - El nuevo arreglo con los valores transpuestos. */ function transpuesta(obj) { var rtn = []; var key = {}; var x = 0; // Función de comparación de objetos var c = function(a, b) { return JSON.stringify(a) === JSON.stringify(b); }; // Recorre el arreglo o JSON que recibe $.each(obj.arr, function(i, v) { var nObj = {}; var keys = Object.keys(v); // Crea un objeto sin las llaves y valores a transponer for (var j = 0; j < keys.length; j++) { if (keys[j] !== obj.field.structure.value && keys[j] !== obj.value) { nObj[keys[j]] = v[keys[j]]; } } var rn = -1; // Evalúa si la llave ya tiene un objeto asociado if (Object.keys(key).length == 0) { key['a_' + x] = { k: nObj, r: rtn.length }; x++; } else { var existe = false; for (var y = 0; y < x; y++) { if (c(key['a_' + y].k, nObj)) { existe = true; rn = key['a_' + y].r; } } if (!existe) { key['a_' + x] = { k: nObj, r: rtn.length }; x++; } } var tmpObj = {}; $.extend(tmpObj, nObj); var k = obj.field.structure; var prp = k.prepend + (v[k.value] + "").replace(k.rp[0] || '', k.rp[1] || '') + k.append; if (rn == -1) { tmpObj[prp] = v[obj.value]; rtn.push(tmpObj); } else { rtn[rn][prp] = v[obj.value]; } }); return rtn; }
Ejemplo de Uso
Vamos a ver un ejemplo práctico de cómo usar esta función.
JSON de Entrada
var jsn = [ {folio: 4401685, fecha: '20/07/2022', orden: 352673, identificador: 44156245, pieza: 312, equivalencia: 'XY-A1'}, {folio: 4401685, fecha: '20/07/2022', orden: 352673, identificador: 44156245, pieza: 504, equivalencia: 'XY-A3'}, {folio: 4401685, fecha: '20/07/2022', orden: 352673, identificador: 44156245, pieza: 312, equivalencia: 'XY-A4'}, {folio: 4401685, fecha: '20/07/2022', orden: 352673, identificador: 44156245, pieza: 1272, equivalencia: 'XY-A6'}, {folio: 4401685, fecha: '20/07/2022', orden: 352673, identificador: 44156245, pieza: 960, equivalencia: 'XY-A7'}, {folio: 4401685, fecha: '20/07/2022', orden: 352673, identificador: 44156245, pieza: 624, equivalencia: 'XY-A8'} ];
Invocación de la Función
var jsonRtn = transpuesta({ arr: jsn, field: { structure: { prepend: 'E_', value: 'equivalencia', rp: ['-', '_'], append: '_PZ' } }, value: 'pieza' });
Resultado
La función transpuesta transformará los datos de la siguiente manera:
console.log(jsonRtn); /* [ { folio: 4401685, fecha: '20/07/2022', orden: 352673, identificador: 44156245, E_XY_A1_PZ: 312, E_XY_A3_PZ: 504, E_XY_A4_PZ: 312, E_XY_A6_PZ: 1272, E_XY_A7_PZ: 960, E_XY_A8_PZ: 624 } ] */
Conclusión
En este artículo, hemos aprendido a transponer valores en un arreglo JSON usando JavaScript. Esta técnica es útil para reorganizar datos y hacerlos más manejables para diferentes propósitos.
Si este artículo te ha sido útil, por favor, deja tu comentario y comparte tu experiencia. Gracias por leernos y hasta la próxima.