JavaScript'da Loops
JavaScript'da for, while, do...while, for...in va for...of sikllarini hamda map, filter, reduce metodlarini real misollar bilan o'rganing.
11-dars
JavaScript'da Loops
Kod yozayotganingizda, bir xil amalni 100 marta qayta-qayta yozish kerak bo'lgan vaziyatga tushganmisiz? Masalan, 1 dan 100 gacha sonlarni konsolga chiqarish yoki massivdagi barcha elementlarni render qilish.
Ana shunday holatlarda loops (sikllar) yordamga keladi.
Nima uchun loops kerak?
Dasturlashda DRY (Don't Repeat Yourself) degan muhim prinsip bor: "O'zingizni takrorlamang."
Loops aynan shu prinsipni amalga oshirishga yordam beradi.
Loopsiz kod:
console.log(1);
console.log(2);
console.log(3);
// ... va hokazo 100 gacha
Loop bilan:
for (let i = 1; i <= 100; i++) {
console.log(i);
}
Farqni ko'ryapsizmi? Bir nechta qator kod yuzlab, hatto millionlab marta ishlay oladi.
1) for loop - An'anaviy sikl
Qachon ishlatiladi: takrorlanishlar soni oldindan ma'lum bo'lganda.
Sintaksis:
for (boshlangichQiymat; shart; qadam) {
// Har bir qadamda bajariladigan kod
}
Real hayotiy misol - savatchadagi mahsulotlar narxini hisoblash:
const mahsulotlar = [
{ nom: "Non", narx: 5000 },
{ nom: "Sut", narx: 12000 },
{ nom: "Tuxum", narx: 20000 },
];
let jamiNarx = 0;
for (let i = 0; i < mahsulotlar.length; i++) {
jamiNarx += mahsulotlar[i].narx;
console.log(`${mahsulotlar[i].nom}: ${mahsulotlar[i].narx} so'm`);
}
console.log(`Jami: ${jamiNarx} so'm`);
Muhim eslatma: for loop uch qismdan iborat:
let i = 0- sikl boshlanishidan oldin bir marta bajariladii < mahsulotlar.length- har bir qadamdan oldin tekshiriladii++- har bir qadamdan keyin bajariladi
2) while loop - Shart asosida ishlaydigan sikl
Qachon ishlatiladi: takrorlanishlar soni oldindan noma'lum bo'lganda, ya'ni biror shart bajarilib turgan paytda.
Real hayotiy misol - bankomatdan pul yechish:
let balans = 100000;
let yechilganPul = 0;
while (balans >= 10000) {
console.log(`Balans: ${balans} so'm`);
balans -= 10000; // 10,000 so'm yechamiz
yechilganPul += 10000;
console.log("10,000 so'm yechildi");
}
console.log(`Jami yechilgan pul: ${yechilganPul} so'm`);
console.log(`Qolgan balans: ${balans} so'm (10,000 so'mdan kam)`);
Ogohlantirish: while loopda cheksiz sikl (infinite loop) xavfi bor. Shart hech qachon false bo'lmasa, dastur to'xtamaydi.
// XAVFLI - BU KODNI ISHLATMANG!
while (true) {
console.log("Bu hech qachon to'xtamaydi!");
}
3) do...while loop - Avval bajar, keyin tekshir
Qachon ishlatiladi: kod kamida bir marta bajarilishi kerak bo'lganda.
Real hayotiy misol - foydalanuvchidan parol so'rash:
let kiritilganParol;
const TOGRI_PAROL = "js123";
do {
kiritilganParol = prompt("Parolni kiriting:");
if (kiritilganParol !== TOGRI_PAROL) {
console.log("Noto'g'ri parol! Qayta urinib ko'ring.");
}
} while (kiritilganParol !== TOGRI_PAROL);
console.log("Xush kelibsiz!");
Farqi:
whileavval shartni tekshiradido...whileavval kodni bajaradi, keyin shartni tekshiradi
4) for...in loop - Obyekt kalitlari bo'ylab yurish
Qachon ishlatiladi: obyektning barcha xususiyatlari (property) bo'ylab yurish kerak bo'lganda.
Real hayotiy misol - foydalanuvchi profilini ko'rsatish:
const foydalanuvchi = {
ism: "Alisher",
yosh: 28,
kasb: "Dasturchi",
shahar: "Toshkent",
telefon: "+998901234567",
};
console.log("=== FOYDALANUVCHI PROFILI ===");
for (let kalit in foydalanuvchi) {
console.log(`${kalit}: ${foydalanuvchi[kalit]}`);
}
Yana bir misol:
const mashina = {
model: "Nexia 3",
yil: 2023,
signalBer: function () {
console.log("Bip-bip!");
},
};
for (let key in mashina) {
console.log(`${key}: ${mashina[key]}`);
}
Muhim eslatma: for...in ba'zi holatlarda prototip zanjiridagi xususiyatlarni ham ko'rsatishi mumkin. Shu sababli uni asosan obyektlar uchun ehtiyotkorlik bilan ishlating.
5) for...of loop - Iterable obyektlar uchun zamonaviy usul
Qachon ishlatiladi: Array, String, Map, Set kabi iterable obyektlar bilan ishlaganda.
Massiv bilan
const mevalar = ["Olma", "Banan", "Apelsin", "Uzum", "Anor"];
for (let meva of mevalar) {
console.log(`Men ${meva}ni yaxshi ko'raman`);
}
Taqqoslash uchun an'anaviy for:
for (let i = 0; i < mevalar.length; i++) {
console.log(`Men ${mevalar[i]}ni yaxshi ko'raman`);
}
Ikkalasi bir xil natija beradi, lekin for...of odatda tozaroq va o'qilishi osonroq bo'ladi.
String bilan
const ism = "JavaScript";
for (let harf of ism) {
console.log(harf);
}
DOM elementlar bilan (frontend amaliyot)
const paragraflar = document.querySelectorAll("p");
for (let p of paragraflar) {
p.style.color = "blue";
p.style.fontWeight = "bold";
}
6) Zamonaviy iteratsiya metodlari: map, filter, reduce
map, filter va reduce nafaqat iteratsiya qiladi, balki ma'lumotlarni qayta ishlashning zamonaviy, funksional usulini beradi. Ular ayniqsa React va Vue kabi freymvorklarda juda ko'p ishlatiladi.
map
Har bir elementni o'zgartirib, yangi massiv yaratadi.
const narxlar = [100, 200, 300];
const qimmatNarxlar = narxlar.map((narx) => narx * 2); // [200, 400, 600]
filter
Faqat shartga mos elementlarni qaytaradi.
const sonlar = [1, 2, 3, 4, 5, 6];
const juftSonlar = sonlar.filter((son) => son % 2 === 0); // [2, 4, 6]
reduce
Massivni bitta yakuniy qiymatga aylantiradi (masalan, yig'indi, obyekt yoki boshqa tuzilma).
const xarajatlar = [12000, 45000, 8000, 23000];
const jamiXarajat = xarajatlar.reduce((jami, joriy) => jami + joriy, 0);
console.log(jamiXarajat); // 88000
📝 Xulosa
- Loops kod takrorini kamaytiradi va DRY prinsipini qo'llashga yordam beradi
for- takror soni aniq bo'lsawhile- shartga bog'liq takrorlanishlardado...while- kod kamida bir marta bajarilishi kerak bo'lsafor...in- obyekt kalitlari bo'ylab yurish uchunfor...of- iterable obyektlar bilan ishlashning qulay usulimap,filter,reduce- zamonaviy va funksional yondashuv
Bu mavzuni yaxshi o'zlashtirsangiz, keyingi darslarda massivlar bilan ishlash, ma'lumotlarni transformatsiya qilish va komponent ichidagi state bilan ishlash ancha osonlashadi.