JavaScript Iteratorlar (Iterators)
Iterator — bu ma'lumotlar ketma-ketligini (ketma-ket elementlarni) birma-bir ko'rib chiqish usulini taqdim etuvchi obyektdir.
Iterator Iterator Protokoliga amal qilishi kerak, ya'ni unda next() metodi bo'lishi shart.
1. next() metodi qanday ishlaydi?
next() metodi chaqirilganda, u ikkita xususiyatga ega bo'lgan obyekt qaytaradi:
value: Iteratsiya ketma-ketligidagi navbatdagi qiymat.done: Agar hali elementlar bo'lsafalse, aks holda (iteratsiya tugagan bo'lsa)trueqaytaradi.
2. Iterable va Iterator farqi
- Iterable:
Symbol.iteratormetodiga ega bo'lgan obyekt (masalan, Massiv, Set). Unifor...oftsikli bilan ishlatsa bo'ladi. - Iterator:
next()metodiga ega bo'lgan va joriy holatni (hozir qaysi elementdaligimizni) biladigan obyekt.
3. Iterator Helper Metodlari (ES2025)
ES2025 versiyasida iteratorlar bilan ishlash uchun bir qator foydali "helper" (yordamchi) funksiyalar qo'shildi. Bu funksiyalar massivlarni o'zgartirmasdan, to'g'ridan-to'g'ri iteratorlar ustida ishlash imkonini beradi:
| Funksiya | Tavsif |
|---|---|
map() | Elementlarni o'zgartirib, yangi iterator qaytaradi. |
filter() | Shartga mos elementlarni saralab oladi. |
take(n) | Dastlabki n ta elementni oladi. |
drop(n) | Dastlabki n ta elementni tashlab yuboradi. |
from() | Har qanday iterable-dan iterator yaratadi. |
forEach() | Har bir element uchun funksiyani bajaradi. |
find() | Shartga mos birinchi elementni qaytaradi. |
every() / some() | Shartni barcha yoki ba'zi elementlar uchun tekshiradi. |
4. Misollar
Iterator.from()
js
const myArr = [1, 2, 3];
const iterator = Iterator.from(myArr);
console.log(iterator.next()); // { value: 1, done: false }take() va drop()
js
const numbers = Iterator.from([1, 2, 3, 4, 5, 6]);
const firstTwo = numbers.take(2); // Faqat 1 va 2 ni oladi
const skipped = numbers.drop(3); // 1, 2, 3 ni tashlab yuboradiXulosa
Iteratorlar JavaScript-da ma'lumotlar oqimi (stream) va katta hajmdagi ma'lumotlar bilan xotirani tejagan holda ishlash uchun juda qulaydir. Yangi ES2025 metodlari esa ularni massivlar kabi oson boshqarish imkonini beradi.
