Equivalencia de filter(), map() y reduce() en C#
Juan Carlos Fuentes Lamas
Posted on October 23, 2020
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
Posted on October 23, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.