Iterator Helpers ya son Baseline: map y filter perezosos sobre iteradores
Los métodos chainable de TC39 procesan iteradores de forma perezosa en lugar de crear arrays intermedios. Llegaron a Node 22 y a los principales navegadores sin polyfill.

Los iterator helpers de TC39 ya son Baseline. Métodos como .map(), .filter(), .take(), .drop() y .flatMap() trabajan ahora sobre iteradores de forma perezosa: procesan un elemento por paso y paran cuando tienen lo que necesitan, en lugar de materializar un array completo tras cada operación. Están en Node 22 LTS, Bun 1.0, Chrome 122, Safari 17.4 y Firefox 131, y desde septiembre de 2026 se consideran Baseline Newly Available, así que no necesitan polyfill.
El coste de los arrays intermedios
Encadenar .map().filter().slice(0, 10) sobre 50.000 elementos hace que JavaScript cree un array entero en cada paso. El map genera 50.000 objetos, el filter descarta buena parte, la siguiente operación vuelve a copiar, y la salida final son diez elementos. El recolector de basura se pasa el tiempo liberando temporales que no llegan a ninguna parte.
Con iteradores, cada método devuelve un iterador que envuelve al anterior y no ejecuta nada hasta que lo consumes. Al llamar a .take(10), el pipeline deja de pedir datos en cuanto ha entregado diez. El map se ejecuta diez veces. El predicate, como mucho diez. El resto de la colección ni se toca.
El patrón de arrays intermedios aparece en cualquier código que procese respuestas de API, resultados de consultas o streams. Hasta ahora la alternativa era un bucle imperativo con acumulación manual, que gana en memoria pero pierde en legibilidad. Los iterator helpers eliminan esa disyuntiva.
La fuente habla de reducciones de memoria de entre el 40% y el 60% en pipelines intensivos en datos y de mejoras de rendimiento de dos a tres veces en conjuntos grandes. Son cifras suyas, sin una medición pública que las respalde.
Compatibilidad
Los métodos funcionan sobre Map, Set, generadores y secuencias infinitas, no solo sobre arrays convertidos con .values(). TypeScript 5.7 y posteriores incluyen las definiciones de tipo completas.
El caso práctico más directo es sustituir cadenas de Lodash por métodos del estándar. Si un equipo importaba la librería solo para tener map, filter y take encadenables y perezosos, ya no le hace falta.
Lo que hay que comprobar en cada caso
El argumento es razonable, pero conviene medir antes de refactorizar. Con datasets pequeños la diferencia es ruido, y reescribir código que funciona no sale gratis. Donde merece la pena mirar es en pipelines grandes sobre respuestas de API, consultas o streams de ficheros, que es el escenario donde los arrays intermedios duelen de verdad.
Y un iterador no es un array: cuando necesitas acceso aleatorio, longitud o mutación in situ, sigues trabajando con arrays. Los helpers resuelven el encadenamiento perezoso, no reemplazan la estructura de datos.

