IlmHamroh
JavaScript Full-stack/8-qism. JavaScript asoslari20/61-dars16 daqiqa
Mundarija (35)

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.
  • length bilan satr uzunligini, indeks va at() 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:

js
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:

js
const davlat = 'O'zbekiston';
text
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:

js
const davlat = "O'zbekiston";
const gap = 'U "Bahor" choyxonasiga bordi';

console.log(davlat); // O'zbekiston
console.log(gap); // U "Bahor" choyxonasiga bordi

Qo'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?

js
const 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, keyingi qon' 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.

js
console.log('O\'zbekiston');
console.log("Ali: \"Salom!\" dedi");

Konsolda:

text
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:

js
console.log("CHOYXONA «Bahor»\nChoy\t3 000 so'm\nSomsa\t8 000 so'm");

Konsolda:

text
CHOYXONA «Bahor»
Choy    3 000 so'm
Somsa   8 000 so'm

Bitta 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:

js
console.log("\u{41}"); // A
console.log("\u{1F600}"); // 😀
console.log("\u0041"); // A

Oxirgi 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:

js
console.log("o'zbek" === "o\u{2BB}zbek"); // false

Foydalanuvchi "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:

js
console.log("C:\new\hisobot.txt");

Konsolda:

text
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:

js
console.log("C:\\new\\hisobot.txt"); // C:\new\hisobot.txt

Tekshirib 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:

js
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.
  • \n kodda 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:

js
const kod = "482915";
const togri = kod.length === 6;

console.log(togri); // true

Diqqat: Emoji'larda length kutilmagan son beradi: "😀".length — 1 emas, 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:

text
Belgi:   T  o  s  h  k  e  n  t
Indeks:  0  1  2  3  4  5  6  7

Nega 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:

js
const shahar = "Toshkent";

console.log(shahar[0]); // T
console.log(shahar[1]); // o
console.log(shahar[7]); // t

shahar[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.

js
const shahar = "Toshkent";

console.log(shahar[shahar.length - 1]); // t
console.log(shahar[8]); // undefined
console.log(shahar[100]); // undefined

Mavjud 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.

js
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] — t emas, undefined. Manfiy indeks faqat at() da ishlaydi.

Maslahat: Eski kodlarda shahar.charAt(0) ni ham uchratasiz. U shahar[0] bilan deyarli bir xil. Bitta farqi: chegaradan chiqsa, undefined emas, bo'sh satr "" qaytaradi.

Tekshirib ko'ring: const ism = "Malika"; bo'lsa, ism[ism.length] va ism.at(-ism.length) nima qaytaradi?

Javob
  • ism[ism.length] — ism[6], ya'ni undefined. Oxirgi indeks 5, 6-indeksda belgi yo'q. Bu klassik "bittaga adashish" xatosi.
  • ism.at(-ism.length) — ism.at(-6), ya'ni M. 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:

js
let ism = "malika";
ism[0] = "M";

console.log(ism); // malika

Xato 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.js va 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'lgan 0 xususiyatiga 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:

js
let ism = "malika";
ism = "M" + ism.slice(1);

console.log(ism); // Malika

ism.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:

js
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:

js
const ism = "ali";
const katta = ism.toUpperCase();

console.log(katta); // ALI
console.log(ism); // ali

toUpperCase() — 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?

js
let 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.

js
const a = "Toshkent";
const b = "Tosh" + "kent";

console.log(a === b); // true
console.log(typeof a); // string

Ikkinchisi: satrni boshqa o'zgaruvchiga bersangiz, ular bir-biriga bog'lanmaydi.

js
const asl = "Ali";
let nusxa = asl;
nusxa = "Vali";

console.log(asl); // Ali
console.log(nusxa); // Vali

nusxa 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" esa false. Satr doim oddiy tirnoq bilan yaratiladi.

8. Ko'p uchraydigan xatolar

8.1 Apostrofli so'zni apostrof ichiga yozish

js
const viloyat = 'Farg'ona';
text
SyntaxError: Unexpected identifier 'ona'

Satr 'Farg' da tugadi, ona — ortiqcha nom. O'zbekcha matnni qo'shtirnoq bilan yozing: "Farg'ona".

8.2 Satrni yopmaslik

js
const xabar = "Buyurtmangiz qabul qilindi;
console.log(xabar);
text
SyntaxError: Invalid or unexpected token

Tarjimasi: "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

js
const parol = "qwerty123";
console.log(parol.length());
text
TypeError: parol.length is not a function

Tarjimasi: "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]

js
const kod = "UZ2026";

console.log(kod[kod.length]); // undefined
console.log(kod[-1]); // undefined
console.log(kod.at(-1)); // 6

Ikkala 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 \

js
const papka = "C:\users\ali";
text
SyntaxError: Invalid Unicode escape sequence

Tarjimasi: "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:

  1. satr uzunligini;
  2. birinchi harfni;
  3. oxirgi harfni — ikki usulda: length bilan va at() bilan.
Yechim
js
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:

text
Mahsulot    Narx
Non    4 000 so'm
Qatiq    9 000 so'm

Ustunlar orasida \t, qatorlar orasida \n bo'lsin. Ishora: satr ichida so'm bor — qaysi tirnoqni tanlaysiz?

Yechim
js
console.log("Mahsulot\tNarx\nNon\t4 000 so'm\nQatiq\t9 000 so'm");

Konsolda:

text
Mahsulot	Narx
Non	4 000 so'm
Qatiq	9 000 so'm

Satr 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:

  1. Raqam uzunligi 13 ga tengmi (true/false)?
  2. Raqam + belgisi bilan boshlanadimi (true/false)?
  3. Operator kodi — 4- va 5-indeksdagi ikki raqam birga ("90"). Ishora: ikki belgini + bilan yopishtiring.
  4. Oxirgi raqam.
  5. Bonus: raqam[4] = "9" deb yozib, operatorni 99 ga 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
js
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); // +998991234567

Indekslarni 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 length bilan 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?", "'😀'.length nechaga 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 faqat s.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.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
JavaScript string asoslari: satr yozish, indeks, length va o'zgarmaslik — IlmHamroh