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

juancarlosfl

Juan Carlos Fuentes Lamas

Posted on October 23, 2020

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

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

💖 💪 🙅 🚩
juancarlosfl
Juan Carlos Fuentes Lamas

Posted on October 23, 2020

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related