JS iteratorlar
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,
falseqaytaradi, aks holda utrueqaytaradi.
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:
| funksiyasi | Tavsif |
|---|---|
| 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 »
W3Schools Pathfinder
Yutuqlaringizni kuzating – bu bepul!
