loading...
Cover image for Equivalencia de filter(), map() y reduce() en C#

Equivalencia de filter(), map() y reduce() en C#

juancarlosfl profile image Juan Carlos Fuentes Lamas ・2 min read

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);
Enter fullscreen mode Exit fullscreen mode

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);
Enter fullscreen mode Exit fullscreen mode

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);
Enter fullscreen mode Exit fullscreen mode

La misma operación la podríamos hacer en C# con Select()

var mapArray = myArray.Select(n => n * 2);
Enter fullscreen mode Exit fullscreen mode

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);
Enter fullscreen mode Exit fullscreen mode

Su equivalencia en C# sería con el método Aggregate()

var sum = myArray.Aggregate(0, 
          (accum, current) => accum + current);
Enter fullscreen mode Exit fullscreen mode

En ambos casos el resultado sería 45

Discussion

pic
Editor guide