Skip to content

JavaScript Iterable Obyektlar (Iterables)

Iterable (takrorlanadigan) obyekt — bu JavaScript-da for...of tsikli yordamida elementlari bo'ylab aylanib chiqish imkonini beruvchi obyektlardir.


1. for...of tsikli va Iterable

JavaScript-dagi for...of operatori aynan iterable obyektlarning qiymatlari bo'ylab yurish uchun mo'ljallangan.

Sintaksis

js
for (o'zgaruvchi of iterable) {
  // Bajariladigan kod bloki
}

2. Iteratsiya nima degani?

Iteratsiya (takrorlash) — bu elementlar ketma-ketligi bo'ylab birma-bir yurib chiqish jarayonidir. JavaScript-da quyidagi obyektlar tabiatan iterable hisoblanadi:

  • Matnlar (Strings)
  • Massivlar (Arrays)
  • To'plamlar (Sets)
  • Lug'atlar (Maps)

3. Matnlar (Strings) bo'ylab iteratsiya

Siz matnning har bir harfini (belgisini) for...of yordamida ko'rib chiqishingiz mumkin:

js
const nom = "VitePress";

for (const harf of nom) {
  console.log(harf); // V, i, t, e, P, r, e, s, s
}

4. Massivlar bo'ylab iteratsiya

Bu massiv elementlarini ko'rishning eng qulay va zamonaviy usulidir:

js
const harflar = ["a", "b", "c"];

for (const x of harflar) {
  console.log(x); // a, b, c
}

5. JavaScript Iterator Protokoli

Texnik jihatdan, biror obyekt iterable bo'lishi uchun unda Symbol.iterator metodi mavjud bo'lishi kerak. Bu metod next() funksiyasini qaytaruvchi iteratorni yaratadi.

next() metodi ikki xil xususiyatga ega obyekt qaytaradi:

  • value: Navbatdagi qiymat.
  • done: Iteratsiya tugadimi? (true yoki false).

6. Shaxsiy (Homemade) Iterable yaratish

Siz o'z obyektlaringizni ham iterable qilishingiz mumkin. Buning uchun unda Symbol.iterator metodini e'lon qilish kifoya:

js
const meningRaqamlarim = {};

meningRaqamlarim[Symbol.iterator] = function() {
  let n = 0;
  return {
    next() {
      n += 10;
      if (n > 50) return { done: true };
      return { value: n, done: false };
    }
  };
};

for (const num of meningRaqamlarim) {
  console.log(num); // 10, 20, 30, 40, 50
}

Xulosa

Iterable obyektlar JavaScript-dagi ma'lumotlar bilan ishlashni juda moslashuvchan qiladi. Symbol.iterator protokoli tufayli biz nafaqat standart massivlar, balki o'zimiz yaratgan tushunchalar ustida ham for...of tsikllarini ishlatishimiz mumkin.