MANIPULACION DE DATOS EN JAVASCRIPT

Supongamos que tenemos la siguiente estructura de datos, muy común en Javascript:

var info = {
url: "www.miblog.com/",
data: [
{
uuid: '24338405-1258-425a-9b43-333c7d36fd1d',
user: 'Abbi',
date: 'Tue Dec 16 2014 16:08:34 GMT-0430 (VET)'
posts: [
{
title: 'Lorem Ipsum'
content: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Fuga facere ut numquam possimus excepturi eaque eum, voluptatibus, temporibus voluptatem rem corporis itaque laborum! Repellat commodi quisquam sit facilis, reprehenderit nulla animi cumque quis reiciendis unde voluptatum quos ipsum odit accusamus delectus libero provident est itaque minus rerum voluptas error et veritatis. Asperiores aliquam distinctio animi fugiat illum et vel quam quia, enim consequatur libero voluptates suscipit ducimus ipsa blanditiis officiis quis incidunt magni perferendis, quas quos. Eius placeat beatae reiciendis vel omnis excepturi ut facere dolores, tempore quo quas obcaecati maiores ipsam, culpa explicabo officiis. Dolore laborum molestias mollitia aliquid.'
},
]
},
{
uuid: '0f9d960c-492d-4f0b-b249-d62c17ed1126',
user: 'Dick323',
date: 'Sat Aug 23 2014 15:10:17 GMT-0430 (VET)'
posts: [
{
title: 'Lorem Sentrum'
content: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Magnam eum non iure ad maxime, nihil eos, dolorem ab assumenda rem. Recusandae quaerat officia, impedit incidunt mollitia sunt quos aliquam suscipit nihil nam repellat dolorum sequi, omnis accusantium iusto at similique voluptatem officiis porro sapiente illo unde. Animi quisquam asperiores, quis omnis voluptatum, nesciunt. Deleniti aperiam fugiat est provident, quas doloremque quam expedita aut nemo repellendus totam possimus esse dolorem consequuntur accusamus asperiores veritatis explicabo eveniet dolore porro nostrum tenetur id mollitia? Nihil reprehenderit quaerat omnis esse sint quos debitis nobis necessitatibus expedita animi, suscipit, porro eligendi, voluptatum, iusto non modi cum libero ratione quasi sed totam placeat doloribus. Veritatis molestias minus mollitia ut nam. Deleniti maiores, neque tenetur reprehenderit doloremque. Sed aperiam, accusamus ipsum neque illum libero consequuntur eligendi sit aspernatur repellat ea consequatur nam similique tempora placeat deleniti ipsa, fugit aliquam explicabo est asperiores ducimus porro! Eaque, deserunt. Rem ab facilis et laborum. Vero unde et reprehenderit ipsum? Cum animi sit, magnam accusantium asperiores nobis accusamus modi corrupti voluptate tenetur, illum amet ratione totam quos eius dolor nulla inventore! Soluta nobis quo modi minus nesciunt ex laborum dolorem cumque aliquid, quod! Nihil fugiat voluptas et sunt dolores, ipsa odit, assumenda expedita corrupti laborum tempora nemo dolorum blanditiis accusantium earum culpa dolorem quibusdam quas iusto quis sed! Voluptas laudantium quaerat accusantium necessitatibus cum eveniet animi distinctio vel ipsa, suscipit asperiores dolorum eligendi magni itaque natus in facere recusandae ad maxime obcaecati hic tempore iste, quae harum aliquid. Saepe temporibus, quod fuga sed. Perspiciatis, sint, ex.'
},
{
title: 'Lorem Ipsum'
content: 'asdd Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sunt, dolore. fasd Lorem ipsum dolor sit amet.'
}
]
},
//...(mucha más data)
]
};

La forma como la obtuvimos es irrelevante (por ahora 😈 ). En cualquier caso, siempre se hace necesario realizar manipulaciones “mágicas”(a veces a fuerza de Javascript trocho y mocho) en estructuras de datos Javascript que pueden compararse a “consultas SQL relacionales”, cosas del tipo: “Ordenar los elementos por fecha”, “obtener los usuarios que tienen más posts publicados”, “el número de posts por usuario y por fecha en un gráfico de interpolación planetaria“, y un larguísimo etcétera 😡 .

Mientras que un script en Javascript es capaz de crecer hasta más de 2000 líneas de código (las he visto o_O ) para poder manipular este tipo de estructuras complejas de datos, hay librerías que nos pueden hacer la vida mucho más sencilla.

UNDERSCORE.JS

Underscore.js es una de esas librerías tipo navaja suiza que sirven para muchísimas cosas en la manipulación de datos. En su página web tienen la documentación oficial de los 112 métodos helpers que realmente ayudan a una sintaxis más limpia del código (y reducir muchas líneas). Por ejemplo, supongamos que tenemos la siguiente estructura:

var frases = [
{extraido_de: 'www.pagina1.com/frases', frase: "A Dios rogando y con el mazo dando"},
{extraido_de: 'http://recurso.pagina3.net', frase: "El que nace barrigón ni que lo fajen chiquito"},
{extraido_de: 'miotrapagina.com', frase: "El que madruga, Dios lo ayuda"},
{extraido_de: 'otrapagina.com', frase: "Camarón que se duerme, se lo lleva la corriente"}
];

Si quisieramos conocer cuantas veces se repite cada palabra por frase encontrada, en Javascript trocho y mocho tendríamos que hacer maromas, en Underscore.js, es incluir la librería y usar los helpers:

console.log(
_.chain(frases) //encadena la ejecución de funciones sobre una misma instancia
.map(function(elemento) { return elemento.frase.split(' '); }) //a cada elemento se le aplica esta función
.flatten() //transforma la matriz resultado en un arreglo unidimensional
.reduce(function(palabras, palabra) { //el resultado es agrupado en una estructura única de datos
palabras[palabra] = (palabras[palabra] || 0) + 1;
return palabras;
}, {})
.value();
)
// => Object({Dios: 2, que: 3, ...})

¡Pero hay más! XD

LODASH

Lodash es un fork de Underscore.js que comprende más funciones que su ancestro (¡241 funciones, deal with it! 😎 ). El ejemplo anterior sería exactamente igual con esta librería, y al igual que la anterior, puedes ver en este enlace la documentación oficial de todos sus helpers.

❓ Pero, ¿por qué la dejas de último y no realizas algún ejemplo con esta librería? ❓

Respuesta: Porque los posts que vienen, van a utilizar esta librería extensivamente, jejeje.

Underscore.js no es mala, de hecho hay proyectos Open Source muy importantes que la usan como componente de sus sistemas, tal es el caso de Backbone.js o DocumentCloud. Incluso, tengo un post que usa la función _.uniq() para eliminar elementos únicos en un Array.

¡Hasta los posts que vienen! *risa malvada* 😉

Anuncios

2 comentarios en “MANIPULACION DE DATOS EN JAVASCRIPT

Los comentarios están cerrados.