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.