Cuando trabajas con arrays en JavaScript, los métodos de orden superior find y reduce te ayudan a buscar elementos específicos y a transformar colecciones en un único valor. Aprenderás cómo usarlos con ejemplos prácticos sobre notas y números, ideal si ya manejas filter y map y quieres dar el siguiente paso.
¿Cómo funciona el método find en JavaScript?
El método find recorre un array y devuelve el primer elemento que cumple con la condición definida en la función callback. A diferencia de filter, que entrega todos los coincidentes, find se detiene en el primero.
Imagina que tienes un array llamado notas3 y quieres ubicar la nota cuyo id sea igual a 2. Lo resuelves así [00:32]:
javascript
const nota = notas3.find((nota) => nota.id === 2);
console.log(nota);
Fíjate en un detalle de estilo: aunque puedes nombrar el parámetro como n, conviene usar nota para que el código sea descriptivo y se entienda qué representa cada elemento dentro de la iteración.
¿Qué devuelve find si no encuentra nada? Devuelve undefined. En cambio, filter devuelve un array vacío [] cuando ningún elemento cumple la condición.
¿Cuándo usar find y cuándo usar filter?
La elección depende de cuántos resultados necesitas:
- Usa find cuando buscas un único elemento, por ejemplo, localizar un usuario por su ID.
- Usa filter cuando necesitas todos los elementos que cumplan la condición, como obtener todas las notas de una categoría.
- Recuerda que filter recorre todo el array, mientras que find se detiene apenas encuentra una coincidencia.
Esta diferencia impacta el rendimiento cuando trabajas con colecciones grandes, así que vale la pena elegir el método correcto desde el inicio.
¿Qué es reduce y para qué sirve en arrays?
El método reduce ejecuta una función reductora sobre cada elemento del array y los va acumulando en un resultado final. Es perfecto para sumar, multiplicar, concatenar o transformar una lista en un valor único [02:25].
El ejemplo clásico es sumar los números del 1 al 5:
javascript
const numeros = [1, 2, 3, 4, 5];
const suma = numeros.reduce((acc, n) => acc + n, 0);
console.log(suma); // 15
Aquí acc es el acumulador, n es el valor actual y el 0 final representa el valor inicial del acumulador. La lógica es simple: en cada iteración tomas lo que ya llevas acumulado y le sumas el nuevo valor.
¿Qué pasa si cambio el valor inicial del acumulador? Si en lugar de 0 usas 10, el resultado será 25, porque reduce arranca desde 10 y a partir de ahí suma cada elemento del array.
¿Cómo aplicar reduce a casos más complejos?
Reduce no se limita a sumar números. Puedes usarlo para contar elementos por categoría, agrupar datos o construir objetos a partir de un array. El reto consiste en aplicar reduce a un arreglo de notas y devolver un objeto que indique cuántas notas existen por cada categoría [04:14].
La idea general sería algo así:
- Iniciar el acumulador como un objeto vacío
{}.
- En cada iteración, revisar la categoría de la nota actual.
- Incrementar el contador correspondiente dentro del acumulador.
Este tipo de ejercicios te entrenan para pensar en términos de transformación de datos, una habilidad clave cuando trabajas con APIs, dashboards o cualquier lógica de negocio que dependa de agrupar información.
¿Qué diferencias clave debes recordar entre find, filter y reduce?
Los tres son métodos de orden superior, pero resuelven problemas distintos:
- find devuelve un solo elemento o
undefined si no hay coincidencia.
- filter devuelve un array con todos los elementos que cumplen la condición, o un array vacío.
- reduce devuelve un único valor acumulado, que puede ser un número, string, objeto o array.
Dominar estos tres te permite escribir código más declarativo, legible y mantenible, sin recurrir a bucles for tradicionales para tareas que ya están resueltas con métodos nativos.
¿Ya intentaste resolver el reto de contar notas por categoría con reduce? Comparte tu solución en los comentarios para que la comunidad pueda revisarla y aprender de tu enfoque.