Volver a la página principal
jueves 31 octubre 2024
3

Cómo usar map y fold en colecciones de Dart

En Dart, los métodos map y fold permiten transformar y reducir colecciones de forma eficiente. Estos métodos facilitan el trabajo con listas y otros tipos de colecciones al aplicar funciones específicas a cada elemento y condensar los resultados en un solo valor.

¿Qué es el método map en Dart?

El método map transforma cada elemento de una colección según una función proporcionada y devuelve una nueva colección con los elementos modificados. map es útil para convertir datos sin modificar la colección original.

Ejemplo de uso de map

En el siguiente ejemplo, se usa map para multiplicar cada elemento de una lista por 2:

void main() {
  var numeros = [1, 2, 3, 4];
  var numerosDuplicados = numeros.map((numero) => numero * 2).toList();

  print(numerosDuplicados); // Salida: [2, 4, 6, 8]
}

En este caso, map aplica la función (numero) => numero * 2 a cada elemento de numeros, generando una nueva lista numerosDuplicados con los valores transformados.

¿Qué es el método fold en Dart?

El método fold reduce una colección a un solo valor acumulando sus elementos de acuerdo con una función específica. fold requiere un valor inicial y una función que combine el valor acumulado con cada elemento de la colección.

Ejemplo de uso de fold

En el siguiente ejemplo, se utiliza fold para calcular la suma de todos los elementos de una lista:

void main() {
  var numeros = [1, 2, 3, 4];
  var suma = numeros.fold(0, (acumulador, numero) => acumulador + numero);

  print(suma); // Salida: 10
}

Aquí, fold comienza con 0 como valor inicial y luego acumula cada elemento de la lista numeros, sumándolos para obtener un resultado final de 10.

Uso combinado de map y fold

Los métodos map y fold se pueden combinar para realizar transformaciones y luego acumular los resultados en una sola operación.

Ejemplo de map y fold combinados

En este ejemplo, se transforma cada elemento para duplicar su valor y luego se suman los resultados:

void main() {
  var numeros = [1, 2, 3, 4];
  var sumaDuplicados = numeros.map((numero) => numero * 2).fold(0, (acumulador, numero) => acumulador + numero);

  print(sumaDuplicados); // Salida: 20
}

Aquí, cada elemento se duplica primero con map, y luego fold acumula los valores en una suma total.

Referencias

Para más información sobre el uso de map y fold en Dart, consulta la documentación oficial de Dart.

Etiquetas:
dart
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer