Skip to content

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'lsa false, aks holda (iteratsiya tugagan bo'lsa) true qaytaradi.

2. Iterable va Iterator farqi ​

  • Iterable: Symbol.iterator metodiga ega bo'lgan obyekt (masalan, Massiv, Set). Uni for...of tsikli 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:

FunksiyaTavsif
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 yuboradi

Xulosa ​

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.