ES2025 thêm các method map, filter, take, drop, flatMap, reduce, toArray... trực tiếp lên Iterator.prototype — dùng được cho mọi iterator (generator, map.values(), set.values()).
Khác biệt cốt lõi: lazy (lười). Array method tạo mảng trung gian ở mỗi bước và xử lý toàn bộ; iterator helper xử lý từng phần tử qua cả pipeline khi cần, không tạo mảng trung gian. Nhờ vậy chúng hoạt động được trên iterator vô hạn.
js
function* naturals() { let n = 1; while (true) yield n++; }
const firstThreeEven = naturals()
.filter((n) => n % 2 === 0)
.map((n) => n * 10)
.take(3)
.toArray();
// [20, 40, 60] — chạy xong, không treo dù nguồn vô hạntake(n)lấy n phần tử đầu rồi dừng nguồn (đây là thứ khiến vô hạn an toàn).drop(n)bỏ qua n phần tử đầu.
So với array: [...naturals()].filter(...) sẽ treo vĩnh viễn. Với dữ liệu hữu hạn nhưng lớn, helper tiết kiệm bộ nhớ vì không materialize mảng trung gian.
Lưu ý: kết quả vẫn là iterator (gọi .toArray() hoặc for...of để tiêu thụ); iterator chỉ chạy một lần.