Lambdas con Javascript

Buenas os traigo otro recurso para manejar listas de objetos o arrays con Javascript. Son Lambdas en toda regla y todas ellas realizadas nativamente con Javascript utilizando las nuevas funcionalidades descritas en el ECMA2015 y ECMA2016  que podéis revisar aquí.

Empezaremos por el “Where” que en este caso  llamado “filter”  , su uso sería así:

Devolverá un nuevo array  con los elementos de nuestro array que hallan pasado nuestra condición, devolviendo esta un true o un false que indicaría si el elemento actual debe estar en esta nueva lista. En un caso real podríamos hacer algo parecido a esto:

La siguiente instrucción Lambda es “OrderBy” a la que llamaremos “sort” , su uso sería de esta forma:

Devolverá un nuevo array  con los elementos de nuestro ordenados por la condición, devolviendo esta un true o un false que indicaría si el elemento actual debe estar primero que el elemento siguiente en la nueva lista. En un caso real podríamos hacer algo parecido a esto:

Bueno parece que ya tendríamos dos de las principales clausulas de las funciones Lambdas de otros lenguajes como c# resueltas , el where y el orderby. ¿Que más podemos hacer?

De mi propia cosecha os traigo el “GroupBy” . ¿Cómo lo conseguimos?  Agregando al la clase Array un nuevo método llamado groupBy.

El ejemplo de uso  podría ser algo como esto:

De esta forma obtendremos 4 grupos, el primero donde la clave es 20 con el usuario1 y usuario2 , luego separados el grupo de clave 25 , 32 , 15 indistintamente.

He de decir que no todos lo navegadores soportan estas nuevas funcionalidades (es decir versiones antiguas), y para ello los chicos de MDN de Mozilla Firefox tienen al igual que la extensión realizada por mi del groupBy , el Array.prototype.x de cada método nuevo. O lo que es lo mismo , podríamos empaquetar todos esta extensiones de la clase Array en una libreria de javascript para poder usarla en navegadores viejos.

Si queréis ver algún ejemplo más currado podéis acceder al Fiddle que realice explicando las lambdas aquí.

 

 

Tagged with: