JS iteratorlar

ULASHISH

Iterator obyekti

Iterator — elementlarga ketma-ket murojaat qilishning standart usulini ta’minlovchi obyekt.

Iterator Iterator protokoliga rioya qilishi kerak: u next() metodiga ega bo‘lishi kerak.


next() metodi

next() metodi ikkita xususiyatga ega obyektni qaytaradi:

  • value xususiyati iteratsiya ketma-ketligidagi keyingi qiymatni saqlaydi.
  • done xususiyati, agar iteratsiya qilinadigan elementlar hali qolgan bo‘lsa, false qaytaradi, aks holda u true qaytaradi.

For Of sikli

JavaScript for..of operatori iterable (iteratsiya qilinadigan) obyekt elementlari bo‘ylab aylanadi.

Sintaksis

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

Texnik jihatdan, iterable obyektlar Symbol.iterator metodini amalga oshirishi kerak.

JavaScript’da quyidagilar iterable hisoblanadi:

  • Stringlar
  • Massivlar
  • Tiplangan massivlar (Typed Arrays)
  • Setlar
  • Map’lar

Chunki ularning prototip obyektlari Symbol.iterator metodiga ega:

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

Ular, ayniqsa, ma’lumotlar oqimlarini qayta ishlash, qiymatlarni kechiktirib hisoblash (lazy evaluation) va aniq belgilangan iteratsiya xatti-harakatiga ega maxsus ma’lumotlar tuzilmalarini yaratish uchun foydalidir.



Yordamchi funksiyalar

JavaScript 2025 (ECMAScript 2025) JavaScript’dagi iteratorlarning funksionalligini sezilarli darajada kengaytiradigan yangi Iterator Helper metodlari to‘plamini rasman tasdiqladi.

Bu metodlar iterable obyektlar, jumladan generatorlar bilan ishlashning yanada funksional va samarali usulini taqdim etadi: ularni avval massivlarga aylantirmasdan to‘g‘ridan-to‘g‘ri o‘zgartirish va transformatsiya qilish imkonini beradi:

funksiyasiTavsif
drop()Qolganlarini berishdan oldin belgilangan miqdordagi elementlarni o‘tkazib yuboradigan iteratorni qaytaradi
every()Barcha elementlar test funksiyasini qanoatlantirsa, true qaytaradi
filter()Filtr funksiyasini qondiradigan elementlarni o‘z ichiga olgan iteratorni qaytaradi
find()Sinov funksiyasini qondiradigan birinchi elementni qaytaradi
flatMap()Har bir elementni xaritalash va natijalarni tekislash orqali iteratorni qaytaradi
forEach()Iteratordagi har bir element uchun funksiyani bir marta bajaradi.
from()iterable obyektdan iterator obyektini yaratadi
map()Map funksiyasi orqali o‘zgartirilgan barcha elementlarga ega iteratorni qaytaradi
reduce()Uni bitta qiymatga kamaytirish uchun har bir elementga nisbatan reduktor funksiyasini qo‘llaydi
some()Kamida bitta element test funksiyasini qanoatlantirsa, true qaytaradi
take()Belgilangan miqdordagi elementlarni beradigan iteratorni qaytaradi

Iterator.from() metodi

Iterator.from() mavjud iterable yoki iterator obyektidan iterator obyektini yaratadi.

Misol

// Create an iterator
const myIterator = Iterator.from([1, 2, 3]);

// Iterate over the elements
let text = "";
for (const x of myIterator) {
  text += x;
}
O‘zingiz sinab ko‘ring »

drop() metodi

drop() metodi qolganlarini berishdan oldin belgilangan miqdordagi elementlarni o‘tkazib yuboradigan yangi iteratorni qaytaradi.

Misol

// Create an iterator
const myIterator = Iterator.from([1, 2, 3, 4, 5, 6]);

// Remove the first five
const firstFive = myIterator.drop(5);
O‘zingiz sinab ko‘ring »

every() metodi

every(fn) metodi iteratordagi barcha elementlar taqdim etilgan test funksiyasiga javob bersa, true qaytaradi.

Misol

// Create an Iterator
const myIterator = Iterator.from("123456789");

// Is every Element greater than 7?
let result = myIterator.every(x => x > 7);
O‘zingiz sinab ko‘ring »

filter() metodi

filter() metodi filtr funksiyasini qondiradigan elementlarni o‘z ichiga olgan yangi iteratorni qaytaradi.

Misol

// Create an iterator
const myIterator = Iterator.from([32, 33, 16, 40]);

// Filter the iterator
const filteredIterator = myIterator.filter(x => x > 18);
O‘zingiz sinab ko‘ring »

find() metodi

find(fn) metodi test funksiyasini qondiradigan birinchi elementni qaytaradi.

Misol

// Create an iterator
const myIterator = Iterator.from([3, 10, 18, 30, 20]);

// Find first greater than 18
let result = myIterator.find(x => x > 18);
O‘zingiz sinab ko‘ring »

flatMap() metodi

flatMap() metodi har bir elementni map qilib, so‘ng natijalarni bitta iteratorga tekislash (flatten) orqali yangi iteratorni qaytaradi.

Misol

// Create an iterator
const myIterator = Iterator.from([1, 2, 3, 4, 5, 6]);

// Map the Iterator
const mappedIterator = myIterator.flatMap(x => [x, x * 10]);
O‘zingiz sinab ko‘ring »

forEach() metodi

forEach() metodi iteratordagi har bir element uchun taqdim etilgan funksiyani bir marta bajaradi.

Misol

// Create an iterator
const myIterator = Iterator.from("123456789");

// Iterate over all elements
let text = "";
myIterator.forEach (x => text += x);
O‘zingiz sinab ko‘ring »

map() metodi

map() metodi Map funksiyasi tomonidan o‘zgartirilgan barcha elementlar bilan yangi iteratorni qaytaradi.

Misol

// Create an iterator
const myIterator = Iterator.from("123456789");

// Now you can use the map method
const mappedIterator = myIterator.map(x => x * 2);
O‘zingiz sinab ko‘ring »

reduce() metodi

reduce() metodi uni bitta qiymatga kamaytirish uchun akkumulyatorga va har bir elementga nisbatan reduktor funksiyasini qo‘llaydi.

Misol

// Create an Iterator
const myIterator = Iterator.from([175, 50, 25]);

// Reduce the Iterator
let result = myIterator.reduce(myFunc);
O‘zingiz sinab ko‘ring »

some() metodi

some() metodi agar iteratordagi kamida bitta element taqdim etilgan test funksiyasiga javob bersa, true qaytaradi.

Misol

// Create an Iterator
const myIterator = Iterator.from("123456789");

// Is some Element greater than 7?
let result = myIterator.some(x => x > 7);
O‘zingiz sinab ko‘ring »

take() metodi

take() metodi ko‘pi bilan belgilangan miqdordagi elementlarni beradigan yangi iteratorni qaytaradi.

Misol

const myIterator = Iterator.from([1, 2, 3, 4, 5, 6]);

// Take the first five elements
const firstFive = myIterator.take(5);
O‘zingiz sinab ko‘ring »
Iteratorlar iteratsiya kontseptsiyasini to‘g‘ridan-to‘g‘ri JavaScript-ning asosiy tiliga olib keladi va for...of siklining xatti-harakatini moslashtirish mexanizmini taqdim etadi.

W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!