JS iterable obyektlar

ULASHISH

Takrorlanadigan obyekt takrorlanadigan obyektdir

Takrorlanuvchini for...of sikllari bilan takrorlash mumkin

For...of sikli

JavaScript for..of operatori takrorlanadigan obyekt elementlari bo‘ylab aylanadi.

Sintaksis

for (variable of iterable) {
  // code block to be executed
}

Takrorlash

Takrorlash elementlar ketma-ketligi ustida aylanishni anglatadi.

Mana bir nechta misollar:

  • String ustida takrorlash
  • Array ustida takrorlash
  • To‘plam ustida takrorlash
  • Map ustida takrorlash

String ustida takrorlash

String elementlarini takrorlash uchun for...of siklidan foydalanishingiz mumkin:

Misol

const name = "W3Schools";

for (const x of name) {
  // code block to be executed
}
O‘zingiz sinab ko‘ring »

Array ustida takrorlash

Array elementlarini takrorlash uchun for...of siklidan foydalanishingiz mumkin:

1-misol

const letters = ["a","b","c"];

for (const x of letters) {
  // code block to be executed
}
O‘zingiz sinab ko‘ring »

2-misol

const numbers = [2,4,6,8];

for (const x of numbers) {
  // code block to be executed
}
O‘zingiz sinab ko‘ring »

To‘plam ustida takrorlash

To‘plam elementlarini takrorlash uchun for...of siklidan foydalanishingiz mumkin:

Misol

const letters = new Set(["a","b","c"]);

for (const x of letters) {
  // code block to be executed
}
O‘zingiz sinab ko‘ring »

Map ustida takrorlash

Map elementlarini takrorlash uchun for...of siklidan foydalanishingiz mumkin:

Misol

const fruits = new Map([
  ["apples", 500],
  ["bananas", 300],
  ["oranges", 200]
]);

for (const x of fruits) {
  // code block to be executed
}
O‘zingiz sinab ko‘ring »


JavaScript iteratorlari

Iterator protokoli obyektdan qiymatlar ketma-ketligini qanday yaratishni belgilaydi.

Obyekt next() usulini amalga oshirganda iteratorga aylanadi.

next() usuli ikkita xususiyatga ega obyektni qaytarishi kerak:

  • qiymat (keyingi qiymat)
  • bajarilgan (to‘g‘ri yoki noto‘g‘ri)
Qiymat Iterator tomonidan qaytarilgan qiymat (agar bajarilgan bo‘lsa, o‘tkazib yuborilishi mumkin)
Bajarildi agar iterator yangi qiymat yaratgan bo‘lsa, agar iterator noto‘g‘ri bajargan bo‘lsa, true

Texnik jihatdan, takrorlanuvchilar Symbol.iterator usulini amalga oshirishi kerak.

JavaScript-da quyidagilar takrorlanadi:

  • Strings
  • Arraylar
  • Yozilgan Arraylar
  • Setlar
  • Map’lar

Chunki ularning prototipi obyektlari Symbol.iterator usuliga ega:


Uyda ishlab chiqarilgan

Bu takrorlanuvchi hech qachon tugamaydigan raqamni qaytaradi: the next() usuli chaqirilganda: 10,20,30,40,....

Misol

// Home Made Iterable
function myNumbers() {
  let n = 0;
  return {
    next: function() {
      n += 10;
      return {value:n, done:false};
    }
  };
}

// Run the Iterable
const n = myNumbers();
n.next(); // Returns 10
n.next(); // Returns 20
n.next(); // Returns 30
O‘zingiz sinab ko‘ring »

Uyda qilingan takrorlashlar JavaScript for...of operatorini qo‘llab-quvvatlamaydi.

JavaScript-ni takrorlash - bu Symbol.iteratorga ega bo‘lgan obyekt.

Symbol.iterator bu next() funksiyasini qaytaruvchi funksiya.

Takrorlanuvchi kod bilan takrorlanishi mumkin: for (const x of iterable) { }

Misol

// Create an Object
myNumbers = {};

// Make it Iterable
myNumbers[Symbol.iterator] = function() {
  let n = 0;
  done = false;
  return {
    next() {
      n += 10;
      if (n == 100) {done = true}
      return {value:n, done:done};
    }
  };
}

Endi for..of’dan foydalanishingiz mumkin

for (const num of myNumbers) {
  // Any Code Here
}
O‘zingiz sinab ko‘ring »

Symbol.iterator usuli avtomatik ravishda for..of tomonidan chaqiriladi.

Ammo biz buni "qo‘lda" ham qilishimiz mumkin:

Misol

let iterator = myNumbers[Symbol.iterator]();

while (true) {
  const result = iterator.next();
  if (result.done) break;
  // Any Code Here
}
O‘zingiz sinab ko‘ring »

Iteratorlar ma’lumotlar ketma-ketligi bilan ishlashning boshqariladigan usulini ta’minlaydi, bu turli ma’lumotlar tuzilmalari uchun maxsus iteratsiya mantig‘ini ta’minlaydi.

Keyingi bobda siz ECMAScript 2025 da kiritilgan yangi Iterator Helper funksiyalari haqida bilib olasiz.



W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!