Mundarija (35)
- Bu darsda
- 1. Nega bu kerak?
- 2. Satr yozishning uch usuli
- 2.1 Uchta tirnoq
- 2.2 O'zbekcha apostrof tuzog'i
- 3. Maxsus belgilar: escape ketma-ketliklar
- 3.1 Teskari chiziq \ — "keyingi belgi maxsus"
- 3.2 Eng ko'p ishlatiladiganlari
- 3.3 Unicode belgilar: \u{...}
- 3.4 Windows yo'li tuzog'i
- 4. Uzunlik: length
- 5. Indeks: belgini raqami bo'yicha olish
- 5.1 Hisob 0 dan boshlanadi
- 5.2 Oxirgi belgi va chegaradan chiqish
- 5.3 at() — oxiridan sanash
- 6. Satr o'zgarmas (immutable)
- 6.1 Harfni almashtirib bo'lmaydi
- 6.2 Unda satrni qanday "o'zgartiramiz"?
- 6.3 Metodlar ham yangi satr qaytaradi
- 6.4 const va o'zgarmaslik — ikki xil narsa
- 7. Satr — primitiv qiymat
- 7.1 Qiymat bo'yicha solishtiriladi va nusxalanadi
- 7.2 Primitivda qanday qilib .length bor?
- 8. Ko'p uchraydigan xatolar
- 8.1 Apostrofli so'zni apostrof ichiga yozish
- 8.2 Satrni yopmaslik
- 8.3 length ga qavs qo'yish
- 8.4 Oxirgi belgi uchun s[s.length] yoki s[-1]
- 8.5 Windows yo'lida bitta \
- 9. Mashqlar
- 1-mashq (oson): Shahar nomi
- 2-mashq (o'rta): Bitta qatorda chek
- 3-mashq (qiyin): Telefon raqami
- 10. Real ishda
- Xulosa
JavaScript string asoslari: satr yozish, indeks, length va o'zgarmaslik
Qisqacha: Satr (string) — qo'shtirnoq
"...", apostrof'...'yoki backtick ichidagi matn. Uning har bir belgisi 0 dan boshlanadigan raqamga — indeksga ega:ism[0]— birinchi belgi,ism.at(-1)— oxirgisi,ism.length— belgilar soni. Satrni "joyida" o'zgartirib bo'lmaydi:ism[0] = "X"hech narsa qilmaydi. O'zgartirish kerak bo'lsa, yangi satr yasaladi.
Bu darsda
- Satrni uch xil tirnoq bilan yoza olasiz va o'zbekcha apostrofli matnda qaysi birini tanlashni bilasiz.
\n,\t,\\kabi maxsus belgilarni ishlata olasiz.lengthbilan satr uzunligini, indeks vaat()bilan istalgan belgini ola olasiz.- Nega satrni joyida o'zgartirib bo'lmasligini va o'rniga nima qilishni tushuntira olasiz.
- Satrlar bilan bog'liq 5 ta ko'p uchraydigan xatoni taniysiz.
Oldin bilishingiz kerak: Ma'lumot turlari xaritasi, let va const bilan o'zgaruvchilar, Arifmetik va tayinlash operatorlari.
1. Nega bu kerak?
Oldingi darsda sonlarning ichiga — bitlarga qaradik. Endi dasturlarda eng ko'p uchraydigan ikkinchi turga o'tamiz — matnga.
Telefoningizni oching. Telegram xabarlari, kontakt ismlari, SMS kod, Click'dagi to'lov izohi — hammasi matn. Har qanday ilova kuniga minglab matnlar bilan ishlaydi:
- foydalanuvchi ismining birinchi harfini olish (profil rasmidagi "A" harfi);
- SMS kod aynan 6 ta belgidan iboratligini tekshirish;
- telefon raqamidan operator kodini (
90,93,99) ajratib olish.
Bularning hammasi shu darsdagi uchta vosita bilan qilinadi: indeks, length va at(). Undan oldin satrni to'g'ri yozishni o'rganamiz — o'zbek tilidagi apostrof bu yerda kutilmagan tuzoq qo'yadi.
2. Satr yozishning uch usuli
2.1 Uchta tirnoq
Ma'lumot turlari darsida ko'rgansiz: satr (string) — tirnoq ichidagi matn. Tirnoqning uch turi bor:
const shahar = "Toshkent";
const taom = 'palov';
const xabar = `Xush kelibsiz`;
console.log(shahar); // Toshkent
console.log(taom); // palov
console.log(xabar); // Xush kelibsiz| Belgi | Nomi | Klaviaturada |
|---|---|---|
"..." |
Qo'shtirnoq (double quote) | Shift + ' |
'...' |
Apostrof, bittalik tirnoq (single quote) | ' tugmasi, Enter yonida |
`...` |
Backtick (teskari tirnoq) | ~ tugmasi, 1 raqamidan chapda |
Birinchi ikkitasi mutlaqo bir xil ishlaydi. Backtick'ning esa qo'shimcha imkoniyatlari bor — ularni keyingi darsda, Template literals mavzusida ko'ramiz.
Tirnoq satrning bir qismi emas. U faqat "matn shu yerdan boshlanadi va shu yerda tugaydi" degan chegara. Shuning uchun konsolda Toshkent tirnoqsiz chiqdi.
2.2 O'zbekcha apostrof tuzog'i
Endi o'zbek dasturchisi uchun eng muhim joy. Sintaksis asoslari darsida bu tuzoqqa qisqacha to'xtalgan edik, endi uni to'liq ochamiz. Satrni apostrof bilan yozib, ichiga "O'zbekiston" so'zini qo'yamiz:
const davlat = 'O'zbekiston';SyntaxError: Unexpected identifier 'zbekiston'Tarjimasi: "Kutilmagan nom: zbekiston". Nega aynan zbekiston? JavaScript satrni ' bilan boshladingiz, demak keyingi ' da tugaydi deb hisoblaydi. U 'O' ni to'liq satr deb o'qidi. Keyin kelgan zbekiston esa satr ham, operator ham emas — shunchaki qo'shimcha so'z. Sabab zbekiston da emas, undan oldingi apostrofda.
Yechim — tashqi tirnoq ichki belgi bilan bir xil bo'lmasin:
const davlat = "O'zbekiston";
const gap = 'U "Bahor" choyxonasiga bordi';
console.log(davlat); // O'zbekiston
console.log(gap); // U "Bahor" choyxonasiga bordiQo'shtirnoq ichida apostrof bemalol turadi. Apostrof ichida esa qo'shtirnoq bemalol turadi.
Maslahat: O'zbek tilidagi matnda
o',g'va tutuq belgisi juda ko'p. Shuning uchun bu kursda satrlarni doim qo'shtirnoq"..."bilan yozamiz. Ko'p jamoalar ham shu qoidani tanlaydi va uni kodni avtomatik tartiblaydigan vosita (Prettier — kursda alohida o'rganamiz) orqali majburiy qiladi. Asosiysi — bitta faylda bitta uslub.
Tekshirib ko'ring: Qaysi qatorlar xato beradi?
jsconst a = "Men 'Navro'z' bayramini yaxshi ko'raman"; const b = 'Qo'qon'; const c = "Ali: "Salom!" dedi";
Javob
a— to'g'ri. Satr qo'shtirnoq bilan ochilgan, ichidagi apostroflar oddiy belgi.b— xato.'Qo'da satr tugaydi, keyingiqon'ortiqcha.c— xato."Ali: "da satr tugaydi,Salom!kutilmagan joyda qoladi.
Qoida: satr ichida tashqi tirnoq bilan bir xil belgi bo'lmasin.
3. Maxsus belgilar: escape ketma-ketliklar
3.1 Teskari chiziq \ — "keyingi belgi maxsus"
Ba'zan satr ichida tashqi tirnoqning o'zi kerak bo'ladi. Yoki yangi qatorga o'tish kerak, lekin satrni ikki qatorga bo'lib yozib bo'lmaydi. Buning uchun escape ketma-ketlik (escape sequence) bor.
Escape ketma-ketlik — teskari chiziq \ va undan keyingi belgi. JavaScript \ ni ko'rsa, "keyingi belgini odatdagidek o'qima, u maxsus" deb tushunadi. Xuddi SMS'dagi "qisqartma" kabi: yozilishi ikki belgi, ma'nosi — bitta boshqa narsa.
console.log('O\'zbekiston');
console.log("Ali: \"Salom!\" dedi");Konsolda:
O'zbekiston
Ali: "Salom!" dedi\' — "bu satr oxiri emas, oddiy apostrof". \" — "oddiy qo'shtirnoq". Ishlaydi, lekin o'qish qiyinroq. Shuning uchun yuqoridagidek boshqa turdagi tirnoqni tanlash odatda qulayroq.
3.2 Eng ko'p ishlatiladiganlari
| Yozilishi | Ma'nosi | Qayerda kerak |
|---|---|---|
\n |
Yangi qator (newline) | Ko'p qatorli xabar, chek |
\t |
Tabulyatsiya (Tab) | Ustunlarni tekislash |
\\ |
Teskari chiziqning o'zi | Windows'dagi fayl yo'li |
\' va \" |
Tirnoqning o'zi | Tirnoq ichida tirnoq |
\u{...} |
Unicode belgi kodi bo'yicha | Emoji, maxsus harflar |
Ko'p qatorli chek:
console.log("CHOYXONA «Bahor»\nChoy\t3 000 so'm\nSomsa\t8 000 so'm");Konsolda:
CHOYXONA «Bahor»
Choy 3 000 so'm
Somsa 8 000 so'mBitta console.log uch qator chiqardi: har \n o'rnida yangi qator boshlandi. \t esa narxlarni bir ustunga surdi.
3.3 Unicode belgilar: \u{...}
Kompyuterda har bir belgining raqami bor — Matn kodlash darsida uni code point deb atagan edik. \u{...} ichiga shu raqamni o'n oltilik sanoqda yozsangiz, belgining o'zi chiqadi:
console.log("\u{41}"); // A
console.log("\u{1F600}"); // 😀
console.log("\u0041"); // AOxirgi qator — eski yozuv: \u dan keyin aynan 4 ta o'n oltilik raqam. U ham ishlaydi, lekin 4 xonadan katta kodlarni (masalan, emoji) yoza olmaydi.
Bu nega kerak? O'zbek matnlarida apostrofning bir nechta turi uchraydi: oddiy ' dan tashqari U+02BB va U+2018 kodli "egri" apostroflar ham bor. Ekranda ular deyarli bir xil, lekin JavaScript uchun har xil belgi:
console.log("o'zbek" === "o\u{2BB}zbek"); // falseFoydalanuvchi "O'zbekiston" so'zini telefonda egri apostrof bilan yozib qidirsa, bazadagi "O'zbekiston" topilmasligi mumkin. Buning yechimini Unicode va emoji darsida ko'ramiz. Hozir faqat bitta narsani eslang: ko'zga bir xil ko'ringan belgilar har doim ham bir xil emas.
3.4 Windows yo'li tuzog'i
Windows'da fayl yo'li teskari chiziq bilan yoziladi: C:\new\hisobot.txt. Uni satrga shundayligicha qo'ysangiz:
console.log("C:\new\hisobot.txt");Konsolda:
C:
ewhisobot.txt\n — yangi qator bo'lib ketdi. \h esa maxsus belgi emas, shuning uchun JavaScript \ ni tashlab yubordi va faqat h qoldi. To'g'ri yozuv — har bir teskari chiziqni ikkilantirish:
console.log("C:\\new\\hisobot.txt"); // C:\new\hisobot.txtTekshirib ko'ring:
console.log("1\t2\n3")konsolda necha qator chiqaradi?
Javob
Ikki qator. Birinchisida 1, tabulyatsiya va 2. \n dan keyin ikkinchi qatorga 3 chiqadi. \t qator qo'shmaydi — faqat bo'sh joy qo'yadi.
4. Uzunlik: length
Satrdagi belgilar sonini length xususiyati beradi:
const shahar = "Toshkent";
const bosh = "";
console.log(shahar.length); // 8
console.log(bosh.length); // 0
console.log("Ali Valiyev".length); // 11
console.log("a\nb".length); // 3- Bo'sh satr
""ning uzunligi —0. - Bo'sh joy (probel) ham belgi:
"Ali Valiyev"da 10 ta harf va 1 ta probel. \nkodda ikki belgi bo'lib yozilsa ham, satrda bitta belgi.
length — satrning xususiyati (property — obyekt misolida ?? va ?. darsida eslagan edik), ya'ni satrga "yopishgan" tayyor ma'lumot. Uni o'qish uchun nuqta qo'yiladi va qavs qo'yilmaydi: shahar.length, shahar.length() emas.
Real misol — SMS kodni tekshirish:
const kod = "482915";
const togri = kod.length === 6;
console.log(togri); // trueDiqqat: Emoji'larda
lengthkutilmagan son beradi:"😀".length—1emas,2. JavaScript ba'zi belgilarni ichkarida ikki bo'lak qilib saqlaydi. Sababini Unicode va emoji darsida ochamiz. Oddiy o'zbek va ingliz harflarida bu muammo yo'q.
5. Indeks: belgini raqami bo'yicha olish
5.1 Hisob 0 dan boshlanadi
Satrdagi har bir belgining tartib raqami bor — indeks (index). Indeks 0 dan boshlanadi:
Belgi: T o s h k e n t
Indeks: 0 1 2 3 4 5 6 7Nega 1 dan emas? Indeks — "boshidan necha qadam narida". Chizg'ichni eslang: uning birinchi belgisi 1 emas, 0. Birinchi harf boshidan 0 qadam narida turibdi, ikkinchisi — 1 qadam.
Belgini olish uchun satrdan keyin kvadrat qavs ichida indeks yoziladi:
const shahar = "Toshkent";
console.log(shahar[0]); // T
console.log(shahar[1]); // o
console.log(shahar[7]); // tshahar[0] natijasi — bitta belgidan iborat yangi satr. JavaScript'da "bitta harf" uchun alohida tur yo'q.
5.2 Oxirgi belgi va chegaradan chiqish
"Toshkent" da 8 ta belgi bor, lekin eng katta indeks — 7. Chunki hisob 0 dan boshlangan. Umumiy qoida: oxirgi indeks — length - 1.
const shahar = "Toshkent";
console.log(shahar[shahar.length - 1]); // t
console.log(shahar[8]); // undefined
console.log(shahar[100]); // undefinedMavjud bo'lmagan indeks xato bermaydi — shunchaki undefined qaytadi. undefined darsidagi qoidani eslang: "bu yerda hech narsa yo'q".
O'zingiz to'ldiring: "Buxoro"[0] natijasi [:B], "Buxoro"[5] natijasi [:o], "Buxoro"[6] natijasi esa .
5.3 at() — oxiridan sanash
Oxirgi belgini olish uchun s[s.length - 1] yozish biroz noqulay. Zamonaviy JavaScript'da (2022-yildan) buning qisqa yo'li bor — at() metodi.
Metod — qiymatga "biriktirilgan" funksiya (console API darsida console.log misolida ko'rgan edik). Satrning metodlari — satr bajara oladigan tayyor amallar. Ular nuqta va qavs bilan chaqiriladi: satr.at(...). Metodlarni keyingi darslarda ko'p o'rganamiz, hozir at() bilan tanishamiz.
at() musbat indeksda [] bilan bir xil ishlaydi. Manfiy indeksda esa oxiridan sanaydi: -1 — oxirgi, -2 — oxiridan ikkinchi.
const shahar = "Toshkent";
console.log(shahar.at(0)); // T
console.log(shahar.at(-1)); // t
console.log(shahar.at(-2)); // n
console.log(shahar.at(-20)); // undefined| Kerak | Kvadrat qavs | at() |
|---|---|---|
| Birinchi belgi | s[0] |
s.at(0) |
| Oxirgi belgi | s[s.length - 1] |
s.at(-1) |
| Oxiridan ikkinchi | s[s.length - 2] |
s.at(-2) |
Diqqat: Kvadrat qavs manfiy indeksni tushunmaydi:
shahar[-1]—temas,undefined. Manfiy indeks faqatat()da ishlaydi.
Maslahat: Eski kodlarda
shahar.charAt(0)ni ham uchratasiz. Ushahar[0]bilan deyarli bir xil. Bitta farqi: chegaradan chiqsa,undefinedemas, bo'sh satr""qaytaradi.
Tekshirib ko'ring:
const ism = "Malika";bo'lsa,ism[ism.length]vaism.at(-ism.length)nima qaytaradi?
Javob
ism[ism.length]—ism[6], ya'niundefined. Oxirgi indeks 5, 6-indeksda belgi yo'q. Bu klassik "bittaga adashish" xatosi.ism.at(-ism.length)—ism.at(-6), ya'niM. Oxiridan 6-belgi — bu birinchi belgi.
6. Satr o'zgarmas (immutable)
6.1 Harfni almashtirib bo'lmaydi
Indeks bilan belgini o'qish mumkin. Unda yozish ham mumkindir? Sinab ko'ramiz:
let ism = "malika";
ism[0] = "M";
console.log(ism); // malikaXato chiqmadi, lekin hech narsa o'zgarmadi ham. JavaScript ism[0] = "M" qatorini jimgina e'tiborsiz qoldirdi.
Bu satrlarning asosiy xususiyati: satr o'zgarmas (immutable). Yaratilgandan keyin uning birorta belgisini ham almashtirib, qo'shib yoki o'chirib bo'lmaydi.
Hayotdan o'xshatish: chop etilgan gazeta. Unda xato topilsa, bosmaxona o'sha nusxadagi harfni o'chirib yozmaydi. Tuzatilgan yangi nusxa chiqaradi.
Maslahat: Yuqoridagi kod oddiy
node fayl.jsva brauzerdagi oddiy<script>da jim o'tadi. Modul fayllarda (.mjs,<script type="module">) va "qat'iy rejim"da (strict mode — alohida dars bor) esa JavaScript xato beradi:TypeError: Cannot assign to read only property '0' of string 'malika'— "'malika'satrining faqat o'qish uchun bo'lgan0xususiyatiga qiymat yozib bo'lmaydi". Xato chiqqani yaxshi: muammo darhol ko'rinadi.
6.2 Unda satrni qanday "o'zgartiramiz"?
Yangi satr yasab, uni o'zgaruvchiga qayta yozamiz:
let ism = "malika";
ism = "M" + ism.slice(1);
console.log(ism); // Malikaism.slice(1) — "1-indeksdan oxirigacha bo'lgan qism", ya'ni "alika". Uni Kesish, bo'lish va to'ldirish darsida batafsil o'rganamiz. "M" + "alika" — yangi satr "Malika". Eski "malika" satri o'zgarmadi — ism yorlig'i shunchaki yangi satrga yopishtirildi.
Ammo += ishlaydi-ku? Ishlaydi, va bu qoidaga zid emas:
let xabar = "Salom";
xabar += "!";
console.log(xabar); // Salom!xabar += "!" — bu xabar = xabar + "!". + ikki satrdan yangi satr yasadi, = esa uni xabar ga yozdi. "Salom" satrining o'zi hech qachon o'zgarmadi. Satr o'zgarmas, lekin let bilan e'lon qilingan o'zgaruvchi boshqa satrga o'ta oladi.
6.3 Metodlar ham yangi satr qaytaradi
Keyingi darslarda satr metodlarini ko'p o'rganamiz. Ularning hammasi bitta qoidaga bo'ysunadi — asl satrni o'zgartirmaydi, yangi satr qaytaradi:
const ism = "ali";
const katta = ism.toUpperCase();
console.log(katta); // ALI
console.log(ism); // alitoUpperCase() — hamma harfni katta qiladigan metod (Matnni o'zgartirish darsida). U "ALI" degan yangi satr yasadi, ism esa avvalgidek "ali".
Yangi boshlovchilar ko'pincha ism.toUpperCase(); deb yozib, natijani hech qayerga saqlamaydi. Keyin ism nega kichik harfligicha qolganiga hayron bo'ladi. Metod natijasini doim o'zgaruvchiga yozing yoki darhol ishlating.
6.4 const va o'zgarmaslik — ikki xil narsa
Bu ikkalasi ko'pincha adashtiriladi:
| Nimani taqiqlaydi | Misol | |
|---|---|---|
const |
O'zgaruvchiga boshqa qiymat yozishni | const s = "a"; s = "b"; — xato |
| O'zgarmaslik | Satrning ichini o'zgartirishni | s[0] = "X" — hech narsa bo'lmaydi |
let bilan e'lon qilingan satr ham o'zgarmas. let faqat yorliqni boshqa satrga ko'chirishga ruxsat beradi.
Tekshirib ko'ring: Konsolda nima chiqadi?
jslet shahar = "buxoro"; shahar.toUpperCase(); console.log(shahar);
Javob
buxoro. toUpperCase() yangi satr "BUXORO" ni qaytardi, lekin biz uni hech qayerga yozmadik — u yo'qolib ketdi. shahar o'zgarmadi. To'g'risi: shahar = shahar.toUpperCase();.
7. Satr — primitiv qiymat
7.1 Qiymat bo'yicha solishtiriladi va nusxalanadi
Ma'lumot turlari darsida satr primitiv ekanini ko'rgansiz. Amalda bu ikki narsani anglatadi.
Birinchisi: bir xil matnli ikki satr doim teng.
const a = "Toshkent";
const b = "Tosh" + "kent";
console.log(a === b); // true
console.log(typeof a); // stringIkkinchisi: satrni boshqa o'zgaruvchiga bersangiz, ular bir-biriga bog'lanmaydi.
const asl = "Ali";
let nusxa = asl;
nusxa = "Vali";
console.log(asl); // Ali
console.log(nusxa); // Valinusxa ga yangi satr yozildi, asl esa joyida qoldi. Obyektlar bilan bunday emas — ular havola semantikasi darsida boshqacha yo'l tutadi.
7.2 Primitivda qanday qilib .length bor?
Savol tug'ilishi mumkin: primitiv — oddiy qiymat bo'lsa, unda qanday qilib .length va .at() bor?
Qisqa javob: siz shahar.length deb yozganingizda, JavaScript bir lahzaga satrni maxsus "o'ram" obyektga o'raydi. Undan kerakli ma'lumotni oladi va o'ramni tashlab yuboradi. Bu jarayonni wrapper obyektlar darsida ko'ramiz — hozir bilish shart emas.
Diqqat: Internetda
new String("Ali")degan yozuvni ko'rishingiz mumkin. Uni ishlatmang: u primitiv emas, obyekt yaratadi.typeof new String("Ali")—"object",new String("Ali") === "Ali"esafalse. Satr doim oddiy tirnoq bilan yaratiladi.
8. Ko'p uchraydigan xatolar
8.1 Apostrofli so'zni apostrof ichiga yozish
const viloyat = 'Farg'ona';SyntaxError: Unexpected identifier 'ona'Satr 'Farg' da tugadi, ona — ortiqcha nom. O'zbekcha matnni qo'shtirnoq bilan yozing: "Farg'ona".
8.2 Satrni yopmaslik
const xabar = "Buyurtmangiz qabul qilindi;
console.log(xabar);SyntaxError: Invalid or unexpected tokenTarjimasi: "Noto'g'ri yoki kutilmagan belgi". Satr ochildi, lekin qator oxirigacha yopilmadi. Oddiy tirnoqli satr bitta qatorda tugashi shart. Qator oxirida tirnoqni tekshiring — VS Code bunday qatorning tagiga qizil to'lqinli chiziq tortadi.
Satrni ataylab ikki qatorga bo'lib yozganda ham xuddi shu xato chiqadi. Ko'p qatorli matn uchun \n yoki backtick ishlatiladi (keyingi dars).
8.3 length ga qavs qo'yish
const parol = "qwerty123";
console.log(parol.length());TypeError: parol.length is not a functionTarjimasi: "parol.length funksiya emas". length — son saqlaydigan xususiyat, uni "chaqirib" bo'lmaydi. Qavsni olib tashlang: parol.length. Qavs faqat metodlarda kerak: at(), toUpperCase().
8.4 Oxirgi belgi uchun s[s.length] yoki s[-1]
const kod = "UZ2026";
console.log(kod[kod.length]); // undefined
console.log(kod[-1]); // undefined
console.log(kod.at(-1)); // 6Ikkala xato ham jim — undefined qaytadi va dastur davom etadi. Oxirgi belgi: kod[kod.length - 1] yoki kod.at(-1).
8.5 Windows yo'lida bitta \
const papka = "C:\users\ali";SyntaxError: Invalid Unicode escape sequenceTarjimasi: "Noto'g'ri Unicode escape ketma-ketlik". \u dan keyin JavaScript belgi kodini kutdi, lekin sers keldi. Yechim: "C:\\users\\ali". Aksariyat hollarda yo'lni oddiy / bilan yozsa ham bo'ladi — Windows uni ham tushunadi.
9. Mashqlar
1-mashq (oson): Shahar nomi
const shahar = "Samarqand"; berilgan. Konsolga chiqaring:
- satr uzunligini;
- birinchi harfni;
- oxirgi harfni — ikki usulda:
lengthbilan vaat()bilan.
Yechim
const shahar = "Samarqand";
console.log(shahar.length); // 9
console.log(shahar[0]); // S
console.log(shahar[shahar.length - 1]); // d
console.log(shahar.at(-1)); // d"Samarqand" da 9 ta harf bor, shuning uchun oxirgi indeks 8. shahar[shahar.length - 1] — shahar[8], at(-1) esa shu harfni oxiridan sanab topadi.
2-mashq (o'rta): Bitta qatorda chek
Faqat bitta console.log yozib, konsolga quyidagini chiqaring:
Mahsulot Narx
Non 4 000 so'm
Qatiq 9 000 so'mUstunlar orasida \t, qatorlar orasida \n bo'lsin. Ishora: satr ichida so'm bor — qaysi tirnoqni tanlaysiz?
Yechim
console.log("Mahsulot\tNarx\nNon\t4 000 so'm\nQatiq\t9 000 so'm");Konsolda:
Mahsulot Narx
Non 4 000 so'm
Qatiq 9 000 so'mSatr ichida apostrof (so'm) bor, shuning uchun uni qo'shtirnoq bilan yozdik. Har \t ustunni, har \n yangi qatorni boshlaydi. Tab kengligi terminalga qarab farq qilishi mumkin, shuning uchun ustunlar sizda biroz boshqacha tekislanishi tabiiy holat.
3-mashq (qiyin): Telefon raqami
const raqam = "+998901234567"; berilgan. Quyidagilarni konsolga chiqaring:
- Raqam uzunligi 13 ga tengmi (
true/false)? - Raqam
+belgisi bilan boshlanadimi (true/false)? - Operator kodi — 4- va 5-indeksdagi ikki raqam birga (
"90"). Ishora: ikki belgini+bilan yopishtiring. - Oxirgi raqam.
- Bonus:
raqam[4] = "9"deb yozib, operatorni99ga o'zgartirishga urining. Nima bo'ladi va nega? Keyin xuddi shu natijani yangi satr yasab oling:raqam.slice(0, 4)— birinchi 4 ta belgi ("+998"),raqam.slice(6)— 6-indeksdan oxirigacha (kesish darsi).
Yechim
const raqam = "+998901234567";
console.log(raqam.length === 13); // true
console.log(raqam[0] === "+"); // true
const operator = raqam[4] + raqam[5];
console.log(operator); // 90
console.log(raqam.at(-1)); // 7
const yangi = raqam.slice(0, 4) + "99" + raqam.slice(6);
console.log(yangi); // +998991234567Indekslarni sanab ko'ramiz: + — 0, 9 — 1, 9 — 2, 8 — 3, 9 — 4, 0 — 5. Shuning uchun operator kodi 4- va 5-indeksda.
Bonus haqida: raqam[4] = "9" satrni o'zgartirmaydi — satr o'zgarmas. Oddiy skriptda qator jimgina o'tib ketadi, modul faylda esa TypeError beradi. Bundan tashqari raqam — const, lekin bu yerda gap unda emas: let bo'lganda ham natija shunday bo'lardi. To'g'ri yo'l — yangi satr yangi ni yasash. Asl raqam esa avvalgidek +998901234567.
10. Real ishda
- Formalar va validatsiya. Parol kamida 8 belgimi, SMS kod aynan 6 ta raqammi, karta raqami 16 xonalimi — hammasi
lengthbilan tekshiriladi. - Interfeys. Telegram yoki Gmail'da rasmi yo'q foydalanuvchining profilida ismining birinchi harfi chiqadi — bu
ism[0]. - Kod uslubi. Jamoalar qo'shtirnoq yoki apostrofni bitta qoidaga keltiradi va uni vosita orqali avtomatik tekshiradi. O'zbekcha matn ko'p loyihada qo'shtirnoq afzal.
- Intervyu. "Satr o'zgaruvchanmi (mutable)?", "
s[0] = 'x'nima qiladi?", "'😀'.lengthnechaga teng?" — boshlang'ich darajada ko'p so'raladigan savollar. Satrni teskari aylantirish kabi masalalarga matn algoritmlari darsida qaytamiz.
Xulosa
- Satr —
"...",'...'yoki backtick ichidagi matn. O'zbekcha matn uchun qo'shtirnoq qulay:"O'zbekiston". \n— yangi qator,\t— tab,\\— teskari chiziq,\u{...}— kod bo'yicha belgi.s.length— belgilar soni (qavssiz). Indeks 0 dan boshlanadi, oxirgisi —length - 1.s[i]chegaradan chiqsa —undefined. Oxiridan sanash faqats.at(-1)bilan.- Satr o'zgarmas:
s[0] = "X"hech narsa qilmaydi. "O'zgartirish" — yangi satr yasab, qayta yozish. - Metodlar asl satrni o'zgartirmaydi — natijani o'zgaruvchiga saqlang.
Keyingi dars: Template literals — backtick imkoniyatlarini ochamiz: ${} bilan qiymatni matnga joylash va ko'p qatorli matn yozish.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!