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
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:
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:
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? (trueyokifalse).
6. Shaxsiy (Homemade) Iterable yaratish
Siz o'z obyektlaringizni ham iterable qilishingiz mumkin. Buning uchun unda Symbol.iterator metodini e'lon qilish kifoya:
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.
