Mundarija (43)
- Bu darsda
- 1. Nega bu kerak?
- 2. Massiv nima?
- 2.1 Massiv yaratish
- 2.2 Konsolda qanday ko'rinadi?
- 2.3 Massivda istalgan turdagi qiymat bo'ladi
- 3. Indeks: elementga murojaat
- 3.1 Indeks 0 dan boshlanadi
- 3.2 Nega 0 dan?
- 3.3 Indeks o'rnida o'zgaruvchi yoki ifoda
- 3.4 Mavjud bo'lmagan indeks
- 4. length — nechta element bor?
- 4.1 Elementlar soni
- 4.2 Oxirgi element
- 4.3 Massiv bo'shmi?
- 4.4 O'zingiz to'ldiring
- 5. at() — oxiridan sanash
- 6. Elementni o'zgartirish
- 6.1 Indeks orqali yangi qiymat
- 6.2 Satrdan farqi
- 6.3 Uzoq indeksga yozish — teshik paydo bo'ladi
- 7. Massiv yaratishning boshqa usullari
- 7.1 split — satrdan massiv
- 7.2 Array.of va new Array tuzog'i
- 8. Ichma-ich massivlar (matritsa)
- 8.1 Massiv ichida massiv
- 8.2 Ikki qadamli murojaat
- 9. Massiv — obyektning bir turi
- 9.1 typeof va Array.isArray
- 9.2 const massiv ham o'zgaradi
- 10. Ko'p uchraydigan xatolar
- 10.1 Birdan sanash
- 10.2 Oxirgi element uchun [-1]
- 10.3 length ni qavs bilan yozish
- 10.4 Ichma-ich massivda chegaradan chiqish
- 10.5 Bo'sh massivni if bilan tekshirish
- 10.6 typeof x === "array"
- 11. Mashqlar
- 1-mashq (oson): Hafta kunlari
- 2-mashq (o'rta): Navbatdagi mijoz
- 3-mashq (qiyin): X-O g'olibi
- 12. Real ishda
- Xulosa
JavaScript massivlar: yaratish va elementga murojaat
Qisqacha: Massiv (array) — bitta o'zgaruvchida saqlanadigan tartiblangan qiymatlar ro'yxati. U kvadrat qavsda yoziladi:
["non", "sut"]. Har bir elementning tartib raqami — indeksi bor va u 0 dan boshlanadi:savat[0]— birinchi element. Elementlar soni —savat.length, oxirgi element —savat.at(-1).
Bu darsda
- Massiv nima ekanini va u qaysi muammoni hal qilishini tushunasiz.
[]bilan massiv yarata olasiz va elementni indeks bo'yicha o'qiy olasiz.lengthvaat(-1)bilan elementlar soni va oxirgi elementni topa olasiz.- Massiv elementini o'zgartira olasiz va ichma-ich massiv (matritsa) bilan ishlay olasiz.
- Massivni
Array.isArraybilan to'g'ri aniqlay olasiz va negaconstmassiv ham o'zgarishini tushuntira olasiz.
Oldin bilishingiz kerak: String asoslari: indeks va length, typeof va turni aniqlash, for...of va for...in, Funksiya e'lon qilish va chaqirish.
1. Nega bu kerak?
Siz onlayn do'kon uchun savat yozyapsiz. Foydalanuvchi uchta mahsulot tanladi. Hozirgi bilimingiz bilan ularni shunday saqlaysiz:
const mahsulot1 = "non";
const mahsulot2 = "sut";
const mahsulot3 = "tuxum";
console.log(mahsulot1, mahsulot2, mahsulot3); // non sut tuxumUchta mahsulot uchun bu ishlaydi. Lekin foydalanuvchi 50 ta mahsulot tanlasa-chi? 50 ta o'zgaruvchi ochasizmi? Undan ham yomoni: mahsulotlar soni oldindan noma'lum. Bugun 3 ta, ertaga 12 ta.
Telegram chatini ham o'ylang. Unda minglab xabar bor va har daqiqada yangisi qo'shiladi. Har bir xabar uchun alohida o'zgaruvchi yozib bo'lmaydi.
Bu muammoni massiv hal qiladi: ko'p qiymat — bitta o'zgaruvchida, tartib bilan.
2. Massiv nima?
Massiv (array) — tartiblangan qiymatlar ro'yxati. Hamma qiymatlar bitta nom ostida saqlanadi va har biri o'z tartib raqamiga ega.
Hayotdan o'xshatish: supermarket kiraverishidagi sumka saqlash shkafchalari. Shkaf bitta, lekin unda raqamlangan kataklar bor. Har katakda bittadan narsa turadi. Narsani olish uchun katak raqamini bilish yetarli.
2.1 Massiv yaratish
Massiv kvadrat qavs [ ] ichida yoziladi. Qiymatlar vergul bilan ajratiladi:
const savat = ["non", "sut", "tuxum"];
console.log(savat); // [ 'non', 'sut', 'tuxum' ]Massiv ichidagi har bir qiymat element deyiladi. savat da 3 ta element bor.
Qavs ichida hech narsa bo'lmasa — bu bo'sh massiv. U keyin to'ldiriladigan ro'yxat uchun kerak:
const xabarlar = [];
console.log(xabarlar); // []Element ko'p bo'lsa, har birini alohida qatorga yozish qulay. Oxirgi elementdan keyingi vergul ham ruxsat etiladi — yangi qator qo'shganda uni unutib qo'ymaysiz:
const shaharlar = [
"Toshkent",
"Samarqand",
"Buxoro",
];
console.log(shaharlar); // [ 'Toshkent', 'Samarqand', 'Buxoro' ]2.2 Konsolda qanday ko'rinadi?
Node massivni [ 'non', 'sut', 'tuxum' ] ko'rinishida chiqaradi. Satrlar apostrof bilan ko'rsatiladi, lekin bu faqat ko'rinish. Kodda ularni qo'shtirnoq bilan yozgan edik — farqi yo'q.
Brauzer konsoli boshqacharoq ko'rsatadi: (3) ['non', 'sut', 'tuxum']. Qavs ichidagi 3 — elementlar soni. Ma'nosi bir xil.
Maslahat:
consoleAPI darsida ko'rganconsole.table(savat)massivni jadval qilib chiqaradi. Unda(index)ustuni — har elementning tartib raqami. Katta massivni ko'zdan kechirishda juda qulay.
2.3 Massivda istalgan turdagi qiymat bo'ladi
Massivga satr ham, son ham, mantiqiy qiymat ham solish mumkin. Hatto aralash ham:
const narxlar = [4000, 12000, 18500];
const javoblar = [true, false, true];
const aralash = ["Ali", 19, true, null];
console.log(narxlar); // [ 4000, 12000, 18500 ]
console.log(aralash); // [ 'Ali', 19, true, null ]JavaScript aralash massivga ruxsat beradi. Lekin real kodda bitta massivda bir xil turdagi qiymatlar saqlanadi: narxlar — faqat sonlar, ismlar — faqat satrlar. Shunda har bir element bilan bir xil ish qilish oson bo'ladi.
Tekshirib ko'ring:
const a = [];vaconst b = [""];— ikkalasi ham bo'shmi?
Javob
Yo'q. a — haqiqatan bo'sh massiv, unda 0 ta element. b da esa bitta element bor — bo'sh satr "". Bo'sh satr ham qiymat, shuning uchun u massivda joy egallaydi.
3. Indeks: elementga murojaat
3.1 Indeks 0 dan boshlanadi
Massivdagi har bir elementning tartib raqami bor — indeks (index). Elementni olish uchun massiv nomidan keyin kvadrat qavsda indeksni yozasiz:
const savat = ["non", "sut", "tuxum"];
console.log(savat[0]); // non
console.log(savat[1]); // sut
console.log(savat[2]); // tuxumTanish ko'rinyaptimi? String asoslari darsida satrning har bir belgisini xuddi shunday olgan edik: ism[0]. Massivda ham qoida bir xil — faqat belgi o'rnida butun element keladi.
| Indeks | 0 | 1 | 2 |
|---|---|---|---|
| Element | "non" |
"sut" |
"tuxum" |
Birinchi element — savat[0], ikkinchisi — savat[1]. Boshida bu g'alati tuyulishi tabiiy. Keling, nega shunday ekanini ko'ramiz.
3.2 Nega 0 dan?
Indeks — "nechanchi element" emas, "boshidan necha qadam narida" degani.
Ko'p qavatli uyning liftini eslang. Birinchi qavatda turibsiz. Birinchi qavatga borish uchun necha qavat ko'tarilish kerak? Nol. Ikkinchi qavatga — bitta, uchinchisiga — ikkita.
Massivda ham shunday. Birinchi element boshning o'zida turadi — undan 0 qadam narida. Ikkinchisi — 1 qadam narida. Kompyuter elementni aynan shu "qadam" orqali topadi. Shuning uchun deyarli barcha dasturlash tillarida sanash 0 dan boshlanadi.
3.3 Indeks o'rnida o'zgaruvchi yoki ifoda
Qavs ichiga faqat raqam emas, son beradigan istalgan ifoda yozish mumkin:
const kunlar = ["Dushanba", "Seshanba", "Chorshanba"];
const bugun = 1;
console.log(kunlar[bugun]); // Seshanba
console.log(kunlar[bugun + 1]); // Chorshanbakunlar[bugun] — JavaScript avval bugun ni hisoblaydi (1), keyin kunlar[1] ni oladi. Bu imkoniyat keyingi darslarda massivni sikl bilan aylanishda juda kerak bo'ladi.
3.4 Mavjud bo'lmagan indeks
Uchta elementli massivdan 10-indeksni so'rasak nima bo'ladi?
const savat = ["non", "sut", "tuxum"];
console.log(savat[10]); // undefined
console.log(savat[-1]); // undefinedXato chiqmaydi — JavaScript shunchaki undefined qaytaradi. Bu undefined va null darsida ko'rgan holat: "bu o'rinda hech narsa yo'q".
Manfiy indeks ham undefined beradi. Kvadrat qavs oxiridan sanashni bilmaydi. Buning uchun alohida metod bor — uni 5-bo'limda ko'ramiz.
Diqqat: Xato chiqmagani yaxshi emas. Dastur jimgina
undefinedbilan ishlashda davom etadi va xato ancha keyin, boshqa joyda ko'rinadi. Indeksni doim tekshirib yozing.
Tekshirib ko'ring:
const ranglar = ["qizil", "yashil", "ko'k"];bo'lsa,ranglar[1]varanglar[3]nima qaytaradi?
Javob
ranglar[1] — "yashil", chunki indeks 0 dan boshlanadi: "qizil" — 0, "yashil" — 1. ranglar[3] — undefined: massivda faqat 0, 1, 2 indekslar bor.
4. length — nechta element bor?
4.1 Elementlar soni
Satrdagi kabi, massivda ham length xususiyati bor. U elementlar sonini beradi:
const savat = ["non", "sut", "tuxum"];
const bosh = [];
console.log(savat.length); // 3
console.log(bosh.length); // 0length — qavssiz yoziladi, chunki u metod emas, xususiyat. U massiv o'zgarganda o'zi yangilanadi.
4.2 Oxirgi element
Elementlar 3 ta, indekslar esa 0, 1, 2. Ko'ryapsizmi? Oxirgi indeks length dan bitta kam. Bu qoidani eslab qoling:
oxirgi indeks = length - 1
const navbat = ["Ali", "Malika", "Jasur", "Dilnoza"];
console.log(navbat.length); // 4
console.log(navbat[navbat.length - 1]); // Dilnozanavbat[navbat.length - 1] — "massivning uzunligidan bitta kam indeksdagi element". Massivda nechta element bo'lishidan qat'i nazar, bu doim oxirgisini beradi.
4.3 Massiv bo'shmi?
Boolean darsida ko'rgandik: bo'sh massiv [] — truthy. Shuning uchun if (savat) bo'sh massivni ham "bor" deb hisoblaydi. Bo'shlikni tekshirishning to'g'ri yo'li — length ga qarash:
const savat = [];
if (savat.length === 0) {
console.log("Savatingiz bo'sh");
}Konsolda:
Savatingiz bo'sh4.4 O'zingiz to'ldiring
Kinoteatrdagi filmlar ro'yxatidan oxirgi filmni chiqarmoqchimiz:
const filmlar = [
"O'tkan kunlar",
"Mahallada duv-duv gap",
"Shum bola",
];
console.log(filmlar[filmlar.___ - 1]); // Shum bolaBo'sh joyga nima yoziladi?
Javob
length. filmlar.length — 3, 3 - 1 — 2, filmlar[2] — "Shum bola". Uzun nomli satrlar ham bittadan element: "Mahallada duv-duv gap" ichidagi bo'sh joylar elementni bo'lib yubormaydi.
5. at() — oxiridan sanash
navbat[navbat.length - 1] uzun va o'qish qiyin. Zamonaviy JavaScript'da qisqa yo'l bor — at() metodi. U satrlarda ham bor edi va massivda xuddi shunday ishlaydi:
const navbat = ["Ali", "Malika", "Jasur", "Dilnoza"];
console.log(navbat.at(0)); // Ali
console.log(navbat.at(-1)); // Dilnoza
console.log(navbat.at(-2)); // Jasur
console.log(navbat.at(10)); // undefined- Musbat son — oddiy indeks kabi, boshidan sanaydi.
- Manfiy son — oxiridan sanaydi:
-1— oxirgisi,-2— oxiridan ikkinchisi. - Chegaradan chiqsa —
undefined.
| Nima kerak | Kvadrat qavs | at() bilan |
|---|---|---|
| Birinchi element | a[0] |
a.at(0) |
| Oxirgi element | a[a.length - 1] |
a.at(-1) |
| Oxiridan ikkinchi | a[a.length - 2] |
a.at(-2) |
Oddiy indeks uchun kvadrat qavs qulay va hamma joyda ishlatiladi. Oxiridan sanash kerak bo'lsa — at().
Tekshirib ko'ring:
const ballar = [85, 92, 78];uchunballar.at(-3)vaballar[-3]nima qaytaradi?
Javob
ballar.at(-3) — 85: oxiridan uchinchi element, ya'ni birinchisi. ballar[-3] — undefined: kvadrat qavs manfiy indeksni tushunmaydi.
6. Elementni o'zgartirish
6.1 Indeks orqali yangi qiymat
Elementni o'qigandek, unga yangi qiymat ham yozish mumkin:
const savat = ["non", "sut", "tuxum"];
savat[1] = "qatiq";
console.log(savat); // [ 'non', 'qatiq', 'tuxum' ]savat[1] = "qatiq" — "1-indeksdagi katakka endi "qatiq" ni qo'y". Eski qiymat ("sut") o'chdi.
6.2 Satrdan farqi
String asoslari darsida satrning ichini o'zgartirib bo'lmasligini ko'rgandik. ism[0] = "X" hech narsa qilmas edi — satr o'zgarmas (immutable).
Massiv esa o'zgaruvchan (mutable). Uning elementlarini almashtirish, qo'shish va o'chirish mumkin. Bu massivning asosiy kuchi: savat, chat, navbat — hammasi vaqt o'tishi bilan o'zgaradi.
| Satr | Massiv | |
|---|---|---|
x[0] bilan o'qish |
Ha | Ha |
x[0] = ... bilan o'zgartirish |
Yo'q | Ha |
6.3 Uzoq indeksga yozish — teshik paydo bo'ladi
Massivda yo'q indeksga yozsangiz, JavaScript massivni kengaytiradi. Lekin oradagi kataklar bo'sh qoladi:
const ismlar = ["Ali"];
ismlar[4] = "Jasur";
console.log(ismlar); // [ 'Ali', <3 empty items>, 'Jasur' ]
console.log(ismlar.length); // 5<3 empty items> — "3 ta bo'sh katak". Bunday massiv teshikli massiv deyiladi. Teshiklar keyinchalik kutilmagan natijalar beradi, shuning uchun ulardan qochiladi. Batafsil — teshikli massivlar darsida.
Oxiriga element qo'shishning to'g'ri usuli bor — push. Uni keyingi darsda o'rganamiz.
7. Massiv yaratishning boshqa usullari
7.1 split — satrdan massiv
Siz massivni allaqachon uchratgansiz. Kesish va bo'lish darsidagi split satrni bo'laklarga bo'lib, massiv qaytarar edi:
const matn = "olma,nok,uzum";
const mevalar = matn.split(",");
console.log(mevalar); // [ 'olma', 'nok', 'uzum' ]
console.log(mevalar[2]); // uzumReal ishda ma'lumot ko'pincha satr bo'lib keladi (fayldan, formadan). split uni massivga aylantiradi, keyin esa indeks bilan ishlaysiz.
7.2 Array.of va new Array tuzog'i
Eski kodda massivni new Array(...) bilan yaratishni uchratasiz. new — maxsus kalit so'z, uni new darsida o'rganamiz, hozir bilish shart emas. Bu usulda bitta tuzoq bor:
console.log(new Array(3, 4)); // [ 3, 4 ]
console.log(new Array(3)); // [ <3 empty items> ]Ikki son bersangiz — o'sha sonlardan massiv. Bitta son bersangiz — shuncha bo'sh katakli teshikli massiv! Bitta 3 soni saqlangan massiv kutgan odam aldanib qoladi.
Bu chalkashlikni tuzatish uchun Array.of qo'shilgan. U doim berilgan qiymatlardan massiv yasaydi:
console.log(Array.of(3)); // [ 3 ]
console.log(Array.of(3, 4)); // [ 3, 4 ]Amalda esa eng ko'p [] yoziladi — u eng qisqa va tushunarli. Array.of ni kutubxonalarda, new Array ni esa eski kodda tanib olsangiz yetarli.
8. Ichma-ich massivlar (matritsa)
8.1 Massiv ichida massiv
Massiv elementi o'zi ham massiv bo'lishi mumkin. Masalan, "X-O" o'yinining 3x3 taxtasi:
const taxta = [
["X", "O", "X"],
["O", "X", " "],
[" ", " ", "O"],
];
console.log(taxta[0]); // [ 'X', 'O', 'X' ]
console.log(taxta[1][2] === " "); // trueQatorlar va ustunlardan iborat bunday tuzilma matritsa (jadval) deyiladi. Excel jadvali, kinoteatr joylari, shaxmat taxtasi — hammasi matritsa.
8.2 Ikki qadamli murojaat
taxta[1][2] ni chapdan o'ngga o'qing:
taxta[1]— ikkinchi qator:["O", "X", " "].- Shu qatorning
[2]elementi —" "(bo'sh katak).
const taxta = [
["X", "O", "X"],
["O", "X", " "],
[" ", " ", "O"],
];
console.log(taxta[1][1]); // X
console.log(taxta[2][2]); // O
console.log(taxta.length); // 3
console.log(taxta[0].length); // 3taxta.length — qatorlar soni. taxta[0].length — birinchi qatordagi kataklar soni. Birinchi qavs — qator, ikkinchisi — ustun.
Matritsa elementini ham o'zgartirsa bo'ladi. O'yinchi markazga emas, pastki chap burchakka "X" qo'ydi:
const taxta = [
["X", "O", "X"],
["O", "X", " "],
[" ", " ", "O"],
];
taxta[2][0] = "X";
console.log(taxta[2]); // [ 'X', ' ', 'O' ]Tekshirib ko'ring:
const jadval = [["matematika", "fizika"], ["tarix", "ingliz tili"]];bo'lsa,"tarix"ni qanday olasiz?
Javob
jadval[1][0]. "tarix" ikkinchi qatorda (indeks 1), shu qatorning birinchi elementi (indeks 0). Avval qator, keyin ustun.
9. Massiv — obyektning bir turi
9.1 typeof va Array.isArray
typeof darsida bir tuzoqni ko'rgandik: massiv uchun typeof "object" deydi.
const savat = ["non", "sut"];
console.log(typeof savat); // object
console.log(Array.isArray(savat)); // true
console.log(Array.isArray("non")); // falseSababi: massiv alohida tur emas, u obyektning bir ko'rinishi. Uning "kalitlari" — indekslar (0, 1, 2), qo'shimcha ravishda esa length xususiyati bor. Eslaysizmi, for...in darsida massivdan "0", "1" kalitlari chiqqan edi? Sababi shu.
Massivni aniqlash uchun typeof emas, Array.isArray(x) ishlatiladi. U faqat haqiqiy massivga true qaytaradi.
9.2 const massiv ham o'zgaradi
Bu savol ko'pchilikni hayron qoldiradi:
const savat = ["non", "sut"];
savat[0] = "somsa";
console.log(savat); // [ 'somsa', 'sut' ]const ku! Nega o'zgardi?
Chunki const o'zgaruvchining o'zini himoya qiladi, massivning ichini emas. let va const darsidagi taqqoslashni eslang: const — "bu yorliqni boshqa qiymatga ko'chirib bo'lmaydi" degani.
Shkaf misoliga qaytaylik. const — shkafni joyidan qo'zg'atib bo'lmaydi degani. Lekin kataklardagi narsalarni almashtirish mumkin. Butun shkafni boshqasiga almashtirishga urinsangiz esa xato chiqadi:
const savat = ["non", "sut"];
savat = ["olma"];TypeError: Assignment to constant variable.Tarjimasi: "o'zgarmas o'zgaruvchiga qiymat berish". savat = ... — yangi massivni shu nomga bog'lashga urinish, const esa buni taqiqlaydi.
Shuning uchun massivlar deyarli doim const bilan e'lon qilinadi. Ichini o'zgartirish kerak bo'lsa ham, massivning o'zi (shkaf) o'sha-o'sha qoladi. Bu qanday ishlashini chuqurroq — havola semantikasi darsida ko'ramiz.
Tekshirib ko'ring: Qaysi qator xato beradi?
jsconst ballar = [70, 80]; ballar[1] = 95; // A ballar = [95]; // B
Javob
Faqat B. A qator massivning ichidagi elementni almashtiradi — const bunga to'sqinlik qilmaydi. B qator esa ballar nomini butunlay yangi massivga bog'lashga urinadi — TypeError: Assignment to constant variable.
10. Ko'p uchraydigan xatolar
10.1 Birdan sanash
const oylar = ["Yanvar", "Fevral", "Mart"];
console.log(oylar[3]); // undefinedUchinchi oyni olmoqchi edik, lekin undefined chiqdi. Uchinchi element — oylar[2]. Indeksni doim "tartib raqami minus bir" deb hisoblang. Bu dasturchilar orasida eng mashhur xato — "off-by-one" (bittaga adashish).
10.2 Oxirgi element uchun [-1]
const oylar = ["Yanvar", "Fevral", "Mart"];
console.log(oylar[-1]); // undefined
console.log(oylar.at(-1)); // MartPython kabi ba'zi tillarda [-1] oxirgi elementni beradi. JavaScript'da esa kvadrat qavsda manfiy indeks ishlamaydi — at(-1) yozing.
10.3 length ni qavs bilan yozish
const oylar = ["Yanvar", "Fevral", "Mart"];
console.log(oylar.length());TypeError: oylar.length is not a functionTarjimasi: "oylar.length — funksiya emas". length — xususiyat, uni chaqirib bo'lmaydi. Qavssiz yozing: oylar.length.
10.4 Ichma-ich massivda chegaradan chiqish
const taxta = [
["X", "O"],
["O", "X"],
];
console.log(taxta[5][0]);TypeError: Cannot read properties of undefined (reading '0')Tarjimasi: "undefined ning xususiyatlarini o'qib bo'lmaydi ('0' ni o'qishda)". Nega aynan undefined? taxta[5] — yo'q qator, u undefined qaytardi. Keyin JavaScript undefined[0] ni hisoblamoqchi bo'ldi. undefined ichida esa hech narsa yo'q. Qoida: bunday xatoda qavs ichidagi '0' ni emas, undan oldingi qismni tekshiring.
Keraksiz xatodan qochish uchun optional chaining ishlatsa bo'ladi: taxta[5]?.[0] — xato o'rniga undefined.
10.5 Bo'sh massivni if bilan tekshirish
const savat = [];
if (savat) {
console.log("Savatda mahsulot bor");
}Konsolda:
Savatda mahsulot borSavat bo'sh, lekin xabar chiqdi. [] — truthy, if uni "bor narsa" deb hisoblaydi. To'g'risi: if (savat.length > 0).
10.6 typeof x === "array"
typeof hech qachon "array" qaytarmaydi. Bunday shart doim false bo'ladi va kod jimgina noto'g'ri ishlaydi. Massivni Array.isArray(x) bilan tekshiring.
11. Mashqlar
1-mashq (oson): Hafta kunlari
hafta massivini yarating: dushanbadan yakshanbagacha 7 ta kun. Keyin konsolga chiqaring:
- Birinchi kun.
- Oxirgi kun —
at()bilan. - Kunlar soni.
Yechim
const hafta = [
"Dushanba",
"Seshanba",
"Chorshanba",
"Payshanba",
"Juma",
"Shanba",
"Yakshanba",
];
console.log(hafta[0]); // Dushanba
console.log(hafta.at(-1)); // Yakshanba
console.log(hafta.length); // 7Birinchi kun — hafta[0], chunki indeks 0 dan boshlanadi. hafta.at(-1) o'rniga hafta[hafta.length - 1] yozsangiz ham to'g'ri — natija bir xil.
2-mashq (o'rta): Navbatdagi mijoz
Bankdagi navbat massivda saqlanadi:
const navbat = ["Ali", "Malika", "Jasur", "Dilnoza", "Bobur"];Quyidagilarni chiqaring:
Kassaga keling: Ali— navbatdagi birinchi odam.Oxirgi: Bobur— navbatning oxiri.Navbatda 5 kishi—lengthbilan.O'rtadagi: Jasur— o'rtadagi odam. Ishora: o'rta indeks —(length - 1) / 2. U butun son bo'lmasligi mumkin, shuning uchunMath.floorbilan yaxlitlang.
Chiqarish uchun template literal ishlating.
Yechim
const navbat = ["Ali", "Malika", "Jasur", "Dilnoza", "Bobur"];
const ortaIndeks = Math.floor((navbat.length - 1) / 2);
console.log(`Kassaga keling: ${navbat[0]}`);
console.log(`Oxirgi: ${navbat.at(-1)}`);
console.log(`Navbatda ${navbat.length} kishi`);
console.log(`O'rtadagi: ${navbat[ortaIndeks]}`);Konsolda:
Kassaga keling: Ali
Oxirgi: Bobur
Navbatda 5 kishi
O'rtadagi: Jasur5 kishilik navbatda (5 - 1) / 2 = 2, navbat[2] — "Jasur". Navbatda 4 kishi bo'lsa, (4 - 1) / 2 = 1.5 chiqadi. Math.floor uni 1 ga tushiradi. Math.floor siz navbat[1.5] — undefined, chunki kasr indeks yo'q.
3-mashq (qiyin): X-O g'olibi
Taxta berilgan:
const taxta = [
["X", "O", "O"],
["O", "X", " "],
[" ", " ", "X"],
];diagonaldaGolibmi(taxta) funksiyasini yozing. U chap yuqoridan o'ng pastga ketgan diagonalni tekshiradi. Uchala katak bir xil va bo'sh (" ") bo'lmasa — g'olib belgisini ("X" yoki "O") qaytaradi. Aks holda null qaytaradi.
Ishora: diagonal kataklari — [0][0], [1][1], [2][2]. Uchta qiymatni === va && bilan (mantiqiy operatorlar) solishtiring. Keraksiz else o'rniga erta qaytish ishlating.
Yechim
function diagonaldaGolibmi(taxta) {
const a = taxta[0][0];
const b = taxta[1][1];
const c = taxta[2][2];
if (a !== " " && a === b && b === c) {
return a;
}
return null;
}
const taxta1 = [
["X", "O", "O"],
["O", "X", " "],
[" ", " ", "X"],
];
const taxta2 = [
["X", "O", "O"],
["O", "O", " "],
[" ", " ", "X"],
];
console.log(diagonaldaGolibmi(taxta1)); // X
console.log(diagonaldaGolibmi(taxta2)); // nullUchta katakni avval nomli o'zgaruvchilarga oldik — shart qisqa va o'qilishi oson bo'ldi. a !== " " tekshiruvi muhim. Usiz uchta bo'sh katak ham "g'olib" deb topilardi.
Bonus: ikkinchi diagonalni ([0][2], [1][1], [2][0]) ham tekshiring. To'liq o'yinda barcha qator va ustunlarni ham ko'rish kerak — buni massiv bo'ylab yurish darsida sikl bilan qisqa yozishni o'rganasiz.
12. Real ishda
Massiv — dasturlashdagi eng ko'p ishlatiladigan ma'lumot tuzilmasi. Hozir ko'rayotgan deyarli hamma ilova ichida massiv bor:
- Onlayn do'kon: savatdagi mahsulotlar, qidiruv natijalari, kategoriyalar ro'yxati.
- Telegram: chatdagi xabarlar, kontaktlar, kanal postlari.
- Server javobi: serverdan keladigan ma'lumot (JSON formatida) deyarli doim massiv ichida keladi — "20 ta mahsulot", "10 ta xabar".
- Jadvallar va o'yinlar: Excel'ga o'xshash ilovalar, shaxmat, "X-O" — ichma-ich massiv.
- React (sayt yasash uchun mashhur vosita, kursda alohida o'rganamiz): ekrandagi ro'yxatlar — massivdan chiziladi.
Intervyuda ko'p beriladigan savollar: "Massiv indeksi nega 0 dan boshlanadi?", "typeof [] nima qaytaradi va massivni qanday tekshirasiz?", "const massivga element qo'shsa bo'ladimi?" — uchalasiga ham endi javob bera olasiz.
Xulosa
- Massiv — tartiblangan qiymatlar ro'yxati:
const savat = ["non", "sut"];. Bo'sh massiv —[]. - Indeks 0 dan boshlanadi:
savat[0]— birinchi element. Yo'q indeks —undefined, xato emas. length— elementlar soni. Oxirgi indeks —length - 1, yoki qisqasiat(-1).- Massiv o'zgaruvchan:
savat[1] = "qatiq"elementni almashtiradi.constfaqat qayta tayinlashni taqiqlaydi. - Ichma-ich massiv (matritsa):
taxta[qator][ustun]. typeof []—"object". MassivniArray.isArray(x)bilan tekshiring.
Oldingi dars: DevTools bilan debug qilish.
Keyingi dars: Element qo'shish va olib tashlash — push, pop, shift, unshift va splice bilan massivni to'ldirish va bo'shatishni o'rganamiz.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!