Conforme voy profundizando en Javascript descubro lo potente que se está volviendo este lenguaje, sobre todo desde la parte de programación funcional. A veces viene bien saber como usar en otros lenguajes dichas funcionalidades.
En este post voy a explicar la equivalencia de las funciones filter()
, map()
y reduce()
de Javascript en C#.
filter()
Dado un array de números vamos a filtrar los que sean mayores de 5
const myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const filterArray = myArray.filter(n => n > 5);
Where()
sería el equivalente en C#, no debemos olvidar importar Linq y en este caso como vamos a usar List también hay que importar Generics
using System.Linq;
using System.Collections.Generic;
var myArray = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var filterArray = myArray.Where(n => n > 5);
De ambas maneras el resultado sería
[ 6, 7, 8, 9 ]
map()
Ahora sobre dicho array vamos a multiplicar todas sus posiciones por dos
const mapArray = myArray.map(n => n*2);
La misma operación la podríamos hacer en C# con Select()
var mapArray = myArray.Select(n => n * 2);
Con ambas operaciones el resultado sería
[ 2, 4, 6, 8, 10, 12, 14, 16, 18 ]
reduce()
Esta función es muy potente ya que lo que antes teníamos que hacer con bucles y variables para hacer un sumatorio de un array, lo podemos hacer en una línea con esta función
const sum = myArray.reduce((accum, current) => accum + current, 0);
Su equivalencia en C# sería con el método Aggregate()
var sum = myArray.Aggregate(0,
(accum, current) => accum + current);
En ambos casos el resultado sería 45
Top comments (1)
Excelente resumen. Directo a favoritos. Desearia agregar por lo menos en el caso del método Select, realizar la conversión a array con .ToArray()