Mundarija (35)
- Bu darsda
- 1. Nega bu kerak?
- 2. Metod nima?
- 2.1 Nuqta, nom va qavs
- 2.2 Metod natija qaytaradi
- 2.3 Qavssiz yozilsa nima bo'ladi?
- 3. includes — bormi yoki yo'qmi?
- 3.1 Asosiy ishlatilishi
- 3.2 Qidirishni o'rtadan boshlash
- 3.3 Bo'sh satr har doim "bor"
- 4. Katta-kichik harf muhim
- 4.1 T va t — ikki xil belgi
- 4.2 Harfdan qat'i nazar qidirish
- 5. startsWith va endsWith — boshi va oxiri
- 5.1 Boshlanishini tekshirish
- 5.2 Oxirini tekshirish
- 5.3 Ikkinchi argument
- 6. indexOf — qayerda turibdi?
- 6.1 Indeksni topish
- 6.2 Nega -1?
- 6.3 Takrorlangan bo'lak
- 6.4 lastIndexOf — oxirgisini topish
- 7. search — qisqa tanishuv
- 8. Qaysi birini tanlash?
- 9. Ko'p uchraydigan xatolar
- 9.1 indexOf natijasini shart sifatida ishlatish
- 9.2 Metod nomida xato
- 9.3 Sonda satr metodi
- 9.4 Qiymat yo'q bo'lsa
- 10. Mashqlar
- 1-mashq (oson): Natijani oldindan ayting
- 2-mashq (o'rta): Mijoz xabarini tekshirish
- 3-mashq (qiyin): Emailni tez tekshirish
- 11. Real ishda
- Xulosa
JavaScript'da matn ichida qidirish: includes, indexOf, startsWith
Qisqacha: Matnda biror so'z bor-yo'qligini bilish uchun
matn.includes("so'z")yoziladi — natijatrueyokifalse. So'z qayerda turganiniindexOfaytadi: u indeksni, topilmasa-1ni beradi. Matn boshinistartsWith, oxiriniendsWithtekshiradi. Bu metodlarning hammasi katta va kichik harfni farqlaydi.
Bu darsda
- Metod chaqiruvini bo'laklarga ajratib o'qiy olasiz: qiymat, metod nomi va argument.
includes,startsWithvaendsWithbilan "bormi?" savoliga javob ola olasiz.indexOfvalastIndexOfbilan bo'lak qayerda turganini topasiz va-1nimani bildirishini bilasiz.- Katta-kichik harf tuzog'ini va
indexOfnatijasini shartda ishlatish xatosini taniysiz. searchmetodiindexOfdan nimasi bilan farq qilishini bilasiz.
Oldin bilishingiz kerak: String asoslari, Template literals, Boolean va truthy/falsy, Ternary operatori.
1. Nega bu kerak?
Siz do'kon uchun Telegram bot yozyapsiz deylik. Botga kuniga yuzlab xabar keladi. Dastur har bir xabar haqida tez javob topishi kerak:
- Xabarda "narx" so'zi bormi? Bo'lsa, narxlar ro'yxatini yuborish kerak.
- Mijozning telefon raqami
+998bilan boshlanadimi? - Yuborilgan fayl nomi
.pdfbilan tugaydimi? - Email manzilida
@belgisi qayerda turibdi?
Odam buni ko'z bilan bir zumda ko'radi. Dastur esa "ko'rmaydi" — unga aniq buyruq kerak. Oldingi darslarda satr — belgilar ketma-ketligi ekanini va har belgining indeksi borligini o'rgandik. Endi shu belgilar orasidan kerakli bo'lakni qidiramiz.
JavaScript'da buning uchun tayyor asboblar bor. Ular metodlar deb ataladi. Metod bilan String asoslari darsida qisqa tanishgansiz (at(), toUpperCase()). Endi uni bo'laklarga ajratib, aniq ko'rib chiqamiz — bu darsdan boshlab u har qadamda uchraydi.
2. Metod nima?
2.1 Nuqta, nom va qavs
Turlarni o'zgartirish darsidagi narx.toString() va String asoslaridagi ism.at(-1) ni eslang. Bu darsdagi hamma narsa xuddi shu shaklda yoziladi:
const shahar = "Toshkent";
console.log(shahar.includes("kent")); // trueshahar.includes("kent") ni bo'laklarga ajratamiz:
| Bo'lak | Ma'nosi |
|---|---|
shahar |
Qiymat — biz ishlayotgan satr |
. |
"Shu qiymatning ..." degan belgi |
includes |
Metod nomi — qanday ish bajariladi |
("kent") |
Qavs ichida metodga beriladigan qiymat |
Eslatib o'tamiz: metod (method) — qiymatga biriktirilgan tayyor amal. Nuqta, nom va qavs yozsangiz, shu amal bajariladi. Buni metodni chaqirish deyiladi.
Hayotdan o'xshatish: telefoningizda kalkulyator, kamera va fonar bor. Ular telefonning o'ziga o'rnatilgan — kerak bo'lsa, ochasiz va ishlatasiz. Satr ham shunday: har bir satr bilan birga o'nlab tayyor metod keladi. Siz faqat kerakli metod nomini yozasiz.
Qavs ichidagi qiymat argument (argument) deb ataladi. U metodga "nima bilan ishlash kerak" degan ma'lumotni beradi. includes("kent") da argument — "kent", ya'ni "shu bo'lakni qidir".
2.2 Metod natija qaytaradi
Metod ishini tugatgach, bitta qiymat beradi. Dasturchilar buni "metod qiymat qaytaradi" deyishadi. includes true yoki false qaytaradi.
Natijani darhol chiqarish yoki o'zgaruvchiga saqlash mumkin:
const xabar = "Assalomu alaykum, narxi qancha?";
const narxHaqida = xabar.includes("narx");
console.log(narxHaqida); // true
console.log(xabar); // Assalomu alaykum, narxi qancha?E'tibor bering: xabar o'zgarmadi. Satr o'zgarmas ekanini String asoslari darsida ko'rgandik. Qidirish metodlari asl satrga tegmaydi — faqat javob beradi.
2.3 Qavssiz yozilsa nima bo'ladi?
console.log("Toshkent".includes); // [Function: includes]Qavssiz metod ishga tushmaydi. JavaScript faqat "bu yerda includes degan funksiya bor" deb xabar beradi. Ha, metod aslida funksiya — qiymatga biriktirilgan funksiya. O'z funksiyalaringizni yozishni Funksiya e'lon qilish va chaqirish darsida o'rganasiz.
Hozircha bitta qoida yetarli: metod ishlashi uchun oxirida qavs bo'lishi shart. Brauzer konsoli yuqoridagi natijani ƒ includes() { [native code] } ko'rinishida chiqaradi — ma'nosi bir xil.
Tekshirib ko'ring:
const ism = "Malika";bo'lsa,ism.includes("lik")ifodasida qiymat, metod nomi va argument qaysi? Natija nima?
Javob
Qiymat — ism ichidagi "Malika" satri. Metod nomi — includes. Argument — "lik". Natija true, chunki "Malika" so'zining o'rtasida "lik" bo'lagi bor.
3. includes — bormi yoki yo'qmi?
3.1 Asosiy ishlatilishi
includes bitta savolga javob beradi: "shu bo'lak matn ichida bormi?" Javob — true yoki false.
const sms = "Hisobingizga 150 000 so'm tushdi. Click";
console.log(sms.includes("tushdi")); // true
console.log(sms.includes("yechildi")); // false
console.log(sms.includes("150 000")); // trueBo'lak istalgan joyda bo'lishi mumkin: boshida, o'rtasida yoki oxirida. Bo'sh joy, raqam va tinish belgilari ham oddiy belgi sifatida qidiriladi.
Natijani ternary operatori bilan birga ishlatish qulay:
const sms = "Hisobingizga 150 000 so'm tushdi. Click";
const turi = sms.includes("tushdi") ? "Kirim" : "Chiqim";
console.log(turi); // Kirim3.2 Qidirishni o'rtadan boshlash
includes ga ikkinchi argument ham berish mumkin — qidirish qaysi indeksdan boshlanishini. Argumentlar vergul bilan ajratiladi.
const kod = "UZ-2026-UZ";
console.log(kod.includes("UZ")); // true
console.log(kod.includes("UZ", 3)); // true
console.log(kod.includes("2026", 8)); // falseIkkinchi qatorda qidirish 3-indeksdan boshlandi. Boshidagi "UZ" hisobga olinmadi, lekin oxiridagisi topildi. Uchinchi qatorda 8-indeksdan keyin "2026" yo'q.
Bu argument kamdan-kam kerak bo'ladi. Lekin boshqa qidirish metodlarida ham xuddi shunday "qayerdan boshlash" argumenti bor — shuning uchun uni tanib oling.
3.3 Bo'sh satr har doim "bor"
console.log("Salom".includes("")); // trueBo'sh satr "" har qanday matnda "bor" hisoblanadi: harflar orasida ham "hech narsa" turadi. Bu qidiruv maydonida tuzoq bo'ladi. Foydalanuvchi hech narsa yozmasa, matn.includes(qidiruv) baribir true beradi. Shuning uchun bo'sh qidiruvni alohida tekshiring, masalan qidiruv.length > 0.
Tekshirib ko'ring:
"Samarqand".includes("arq")va"Samarqand".includes("Arq")nima qaytaradi?
Javob
Birinchisi true: "Samarqand" ichida "arq" bor. Ikkinchisi false: matnda katta A bilan "Arq" yo'q. Katta va kichik harf — boshqa-boshqa belgilar. Buni keyingi bo'limda ko'ramiz.
4. Katta-kichik harf muhim
4.1 T va t — ikki xil belgi
const shahar = "Toshkent";
console.log(shahar.includes("toshkent")); // false
console.log(shahar.includes("Tosh")); // trueKompyuter uchun T va t — ikki xil belgi, har birining o'z raqamli kodi bor. Buni Taqqoslash operatorlari darsida ko'rgandik. Bu darsdagi barcha qidirish metodlari katta-kichik harfga sezgir (inglizcha: case-sensitive).
4.2 Harfdan qat'i nazar qidirish
Mijoz "NARX", "Narx" yoki "narx" deb yozishi mumkin. Bot hammasini tushunishi kerak. Yechim: qidirishdan oldin matnni kichik harfga keltirish. Buni toLowerCase() metodi qiladi — u satrning kichik harfli nusxasini qaytaradi:
const xabar = "NARXI QANCHA?";
console.log(xabar.toLowerCase()); // narxi qancha?
console.log(xabar.toLowerCase().includes("narx")); // truetoLowerCase ni Matnni o'zgartirish va tozalash darsida to'liq o'rganamiz. Hozir ikkinchi console.log ga qarang: unda ikki metod ketma-ket chaqirildi. Avval toLowerCase() yangi satr qaytardi, keyin shu yangi satrda includes ishladi.
Bunday yozuv zanjir (chaining) deb ataladi. U chapdan o'ngga o'qiladi: "xabarni kichik harfga o'tkaz, keyin ichidan narx'ni qidir".
Diqqat: Qidirilayotgan so'z ham kichik harfda bo'lishi kerak.
xabar.toLowerCase().includes("Narx")baribirfalseberadi: matn kichik harfga o'tdi, "Narx" esa katta harf bilan qoldi.
5. startsWith va endsWith — boshi va oxiri
5.1 Boshlanishini tekshirish
startsWith — "shu bo'lak bilan boshlanadimi?" degan savol. Nomi ikki inglizcha so'zdan: start — boshlanish, with — bilan.
const telefon = "+998901234567";
console.log(telefon.startsWith("+998")); // true
console.log(telefon.startsWith("998")); // falseIkkinchi natija false, chunki raqam 9 bilan emas, + bilan boshlanadi.
Nega bu yerda includes yetmaydi? U bo'lakni istalgan joydan topadi. Rossiya raqami ichida ham tasodifan "998" uchrashi mumkin:
const raqam = "+79981234567";
console.log(raqam.includes("998")); // true
console.log(raqam.startsWith("+998")); // falseincludes "ha, bor" dedi, lekin bu O'zbekiston raqami emas. Boshlanishni tekshirish kerak bo'lsa — faqat startsWith.
5.2 Oxirini tekshirish
endsWith — "shu bo'lak bilan tugaydimi?" (end — oxir).
const fayl = "shartnoma.pdf";
console.log(fayl.endsWith(".pdf")); // true
console.log(fayl.endsWith(".docx")); // falseFayl kengaytmasini nuqtasi bilan yozing: "pdf" emas, ".pdf". Aks holda "rasm-pdf" degan nom ham "PDF fayl" bo'lib chiqadi.
Diqqat: Kengaytmani
includesbilan tekshirmang."hisobot.pdf.exe".includes(".pdf")—true, lekin bu aslida.exedastur. Firibgarlar aynan shunday nomli fayllarni yuboradi.endsWith(".pdf")esa to'g'ri javob beradi —false.
5.3 Ikkinchi argument
startsWith ning ikkinchi argumenti — tekshirish qaysi indeksdan boshlanishi. Masalan, operator kodini tekshirish:
const telefon = "+998901234567";
console.log(telefon.startsWith("90", 4)); // true
console.log(telefon.startsWith("93", 4)); // false+998 to'rt belgi (0–3 indekslar). Demak, operator kodi 4-indeksdan boshlanadi.
endsWith ning ikkinchi argumenti boshqacha — u matn uzunligi. Matn go'yo shu joyda tugagandek tekshiriladi:
const fayl = "hisobot.pdf.exe";
console.log(fayl.endsWith(".pdf", 11)); // trueBirinchi 11 belgi — "hisobot.pdf", u .pdf bilan tugaydi. Bu argument juda kam ishlatiladi, lekin eski kodda uchrab qolishi mumkin.
Tekshirib ko'ring: Telegram botga
/startbuyrug'i keldi. Xabar buyruq ekanini, ya'ni/bilan boshlanishini qaysi metod bilan tekshirasiz?
Javob
xabar.startsWith("/"). includes("/") to'g'ri kelmaydi: "1/2 kg olma" kabi oddiy xabarda ham / bor. Bizga aynan birinchi belgi kerak.
6. indexOf — qayerda turibdi?
6.1 Indeksni topish
Ba'zan "bormi?" yetmaydi — bo'lak qayerda turganini bilish kerak. Masalan, emaildagi @ dan oldingi qism — foydalanuvchi nomi. Uni ajratish uchun avval @ ning o'rnini topamiz:
const email = "jasur@gmail.com";
console.log(email.indexOf("@")); // 5
console.log(email.indexOf("gmail")); // 6
console.log(email.indexOf("mail.ru")); // -1indexOf bo'lakning indeksini qaytaradi. Bo'lak bir necha belgidan iborat bo'lsa, birinchi belgisining indeksi olinadi. "gmail" 6-indeksdan boshlanadi.
Indekslarni ko'z bilan tekshirib ko'ramiz. Esingizda bo'lsa, sanash 0 dan boshlanadi:
j a s u r @ g m a i l . c o m
0 1 2 3 4 5 6 7 8 9 10 11 12 13 146.2 Nega -1?
"mail.ru" topilmadi, natija — -1. Nega 0 emas? Chunki 0 — to'g'ri indeks, birinchi belgining o'rni. "jasur".indexOf("j") ham 0 beradi. "Topilmadi" degan javob hech qachon indeks bo'la olmaydigan son bo'lishi kerak. Manfiy indeks bo'lmaydi — shuning uchun -1 tanlangan.
Demak, "bormi?" savolini indexOf bilan ham berish mumkin:
const email = "jasur@gmail.com";
console.log(email.indexOf("@") !== -1); // trueincludes JavaScript'ga 2015-yilda qo'shilgan. Undan oldin hamma aynan shunday yozardi. Eski kodda !== -1 ni ko'rsangiz — bu "bormi?" degani. Yangi kodda includes o'qishga qulayroq.
6.3 Takrorlangan bo'lak
Bo'lak bir necha marta uchrasa, indexOf faqat birinchisini topadi. Ikkinchisini topish uchun ikkinchi argumentdan foydalanamiz — qidirishni birinchisidan keyingi joydan boshlaymiz:
const yonalish = "Toshkent-Samarqand-Buxoro";
const birinchi = yonalish.indexOf("-");
console.log(birinchi); // 8
console.log(yonalish.indexOf("-", birinchi + 1)); // 18birinchi + 1 — 9-indeks. Qidirish shu yerdan boshlandi va keyingi - 18-indeksda topildi.
6.4 lastIndexOf — oxirgisini topish
lastIndexOf ham indeks qaytaradi, lekin bo'lakning oxirgi uchrashini topadi. Fayl kengaytmasi uchun aynan shu kerak — nomda nuqta bir nechta bo'lishi mumkin:
const fayl = "hisobot.2026.pdf";
console.log(fayl.indexOf(".")); // 7
console.log(fayl.lastIndexOf(".")); // 12Kengaytma oxirgi nuqtadan keyin boshlanadi. Keyingi darsda shu indeks yordamida kengaytmani matndan kesib olamiz.
Topilmasa, lastIndexOf ham -1 qaytaradi.
Tekshirib ko'ring:
"Andijon".indexOf("n")va"Andijon".lastIndexOf("n")nima qaytaradi?
Javob
1 va 6. "Andijon" so'zida n ikki marta bor: 1-indeksda (A-n-dijon) va oxirida, 6-indeksda. indexOf birinchisini, lastIndexOf oxirgisini topadi.
7. search — qisqa tanishuv
search ham indeks yoki -1 qaytaradi. Birinchi qarashda u indexOf ning egizagi:
console.log("jasur@gmail.com".search("@")); // 5Lekin bitta muhim farqi bor. Mana:
const narx = "5.000 so'm";
console.log(narx.indexOf(".")); // 1
console.log(narx.search(".")); // 0search nuqtani 0-indeksda "topdi", garchi u yerda 5 tursa ham. Sababi: search argumentni oddiy matn emas, muntazam ifoda (regular expression, qisqasi regex) deb tushunadi. Regex — matndagi naqshni tasvirlaydigan maxsus kichik til. Unda nuqta "istalgan bitta belgi" degani, shuning uchun birinchi belgi — 5 — mos keldi.
Regex'ni RegExp asoslari darsida o'rganamiz — hozir bilish shart emas. Qoida oddiy: oddiy matnni qidirish uchun indexOf yoki includes ishlating. search regex bilan birga kerak bo'ladi.
8. Qaysi birini tanlash?
| Savol | Metod | Natija |
|---|---|---|
| Bormi? | includes |
true / false |
| Shu bilan boshlanadimi? | startsWith |
true / false |
| Shu bilan tugaydimi? | endsWith |
true / false |
| Qayerda (birinchisi)? | indexOf |
indeks yoki -1 |
| Qayerda (oxirgisi)? | lastIndexOf |
indeks yoki -1 |
| Naqsh qayerda? | search |
indeks yoki -1 |
Oddiy maslahat: agar sizga faqat "ha" yoki "yo'q" kerak bo'lsa — birinchi uchtasidan birini tanlang. Indeks keyingi ish uchun kerak bo'lsa (masalan, kesish uchun) — indexOf yoki lastIndexOf.
9. Ko'p uchraydigan xatolar
9.1 indexOf natijasini shart sifatida ishlatish
const xabar = "Salom, narxi qancha?";
const javob = xabar.indexOf("Salom") ? "Salom bor" : "Salom yo'q";
console.log(javob); // Salom yo'q"Salom" bor-ku, nega "yo'q" chiqdi? indexOf 0 qaytardi — so'z aynan boshida turibdi. 0 esa falsy qiymat, ternary uni "yolg'on" deb qabul qildi.
Teskarisi ham bor: bo'lak topilmasa -1 qaytadi, -1 esa truthy. Natijada "bor" chiqadi. Qoida: indexOf natijasini hech qachon to'g'ridan-to'g'ri shartga qo'ymang. includes yoki !== -1 ishlating:
const xabar = "Salom, narxi qancha?";
const javob = xabar.includes("Salom") ? "Salom bor" : "Salom yo'q";
console.log(javob); // Salom bor9.2 Metod nomida xato
const ism = "Ali";
console.log(ism.include("A"));TypeError: ism.include is not a functionTarjimasi: "ism.include — funksiya emas". Satrda include degan metod yo'q, to'g'risi — includes (oxirida s). JavaScript yo'q metodni chaqira olmaydi.
Katta-kichik harf ham xuddi shunday xato beradi: startswith, IndexOf, endswith — hammasi noto'g'ri. Nomdagi har bir so'z katta harf bilan qo'shiladi: startsWith, endsWith, indexOf, lastIndexOf. Bu camelCase usuli. VS Code nuqtadan keyin metodlar ro'yxatini ko'rsatadi — undan tanlash xatoni kamaytiradi.
9.3 Sonda satr metodi
const telefon = 998901234567;
console.log(telefon.startsWith("998"));TypeError: telefon.startsWith is not a functionXato xabari avvalgisiga o'xshaydi, lekin sababi boshqa. Nom to'g'ri yozilgan, ammo telefon — son, satr emas. Sonda satr metodlari yo'q. Avval satrga aylantiring: String(telefon).startsWith("998") (Turlarni o'zgartirish).
9.4 Qiymat yo'q bo'lsa
let izoh;
console.log(izoh.includes("yaxshi"));TypeError: Cannot read properties of undefined (reading 'includes')Tarjimasi: "undefined ning xususiyatlarini o'qib bo'lmaydi (includes o'qilayotgan edi)". izoh ga hali qiymat berilmagan — u undefined. "Hech narsa" da metod yo'q. Bu ko'pincha forma maydoni to'ldirilmaganda yoki ma'lumot hali kelmaganda bo'ladi.
?. va ?? darsidagi usullar yordam beradi:
let izoh;
console.log(izoh?.includes("yaxshi")); // undefined
console.log((izoh ?? "").includes("yaxshi")); // falseBirinchi usul: izoh yo'q bo'lsa, ?. metodni chaqirmaydi va xato o'rniga undefined beradi. Ikkinchi usul: izoh yo'q bo'lsa, uning o'rniga bo'sh satr olinadi. Natija aniq false bo'ladi.
10. Mashqlar
1-mashq (oson): Natijani oldindan ayting
Har bir ifoda nima qaytarishini yozing. const shahar = "Andijon";
shahar.includes("dij")→shahar.startsWith("an")→shahar.endsWith("jon")→shahar.indexOf("x")→shahar.lastIndexOf("n")→
Yechim
const shahar = "Andijon";
console.log(shahar.includes("dij")); // true
console.log(shahar.startsWith("an")); // false
console.log(shahar.endsWith("jon")); // true
console.log(shahar.indexOf("x")); // -1
console.log(shahar.lastIndexOf("n")); // 6startsWith("an") — false, chunki shahar nomi katta A bilan boshlanadi. x harfi yo'q — shuning uchun -1. Oxirgi n 6-indeksda: A(0) n(1) d(2) i(3) j(4) o(5) n(6).
2-mashq (o'rta): Mijoz xabarini tekshirish
Botga shunday xabar keldi:
const xabar = "Salom! Chilonzorga YETKAZIB berasizmi?";Uchta natijani konsolga chiqaring:
- Xabarda "yetkazib" so'zi bormi? Harf katta yoki kichik bo'lishidan qat'i nazar. Ishora:
toLowerCase()bilan zanjir tuzing ("Harfdan qat'i nazar qidirish" bo'limidagi kabi). - Xabar savol belgisi
?bilan tugaydimi? Ishora:endsWith. - Xabar "Salom" bilan boshlanadimi? Ishora:
startsWith.
Bonus: birinchi natijaga qarab ternary bilan Yetkazib berish haqida yoki Boshqa savol matnini chiqaring.
Yechim
const xabar = "Salom! Chilonzorga YETKAZIB berasizmi?";
const yetkazib = xabar.toLowerCase().includes("yetkazib");
console.log(yetkazib); // true
console.log(xabar.endsWith("?")); // true
console.log(xabar.startsWith("Salom")); // true
const mavzu = yetkazib ? "Yetkazib berish haqida" : "Boshqa savol";
console.log(mavzu); // Yetkazib berish haqidatoLowerCase() siz xabar.includes("yetkazib") false bergan bo'lardi — xabarda so'z katta harf bilan yozilgan.
3-mashq (qiyin): Emailni tez tekshirish
Ro'yxatdan o'tish formasida foydalanuvchi email kiritdi:
const email = "malika.karimova@mail.uz";Quyidagilarni hisoblab, konsolga chiqaring:
@ning indeksi (indexOf).@faqat bitta ekanini: birinchi va oxirgi@ning indeksi teng bo'lishi kerak. Ishora:indexOf("@") === lastIndexOf("@").@dan keyin nuqta bormi? Ishora:indexOf(".", qayerdan)— qidirishni@ning indeksidan boshlang va natijani-1bilan solishtiring.- Oxirida: 2- va 3-shart ikkalasi ham bajarilsa
Email to'g'ri ko'rinadi, aks holdaEmail xato. Ishora:&&va ternary.
Yechim
const email = "malika.karimova@mail.uz";
const atIndeks = email.indexOf("@");
const bittami = atIndeks === email.lastIndexOf("@");
const nuqtaBor = email.indexOf(".", atIndeks) !== -1;
console.log(atIndeks); // 15
console.log(bittami); // true
console.log(nuqtaBor); // true
const holat = bittami && nuqtaBor
? "Email to'g'ri ko'rinadi"
: "Email xato";
console.log(holat); // Email to'g'ri ko'rinadi@ belgisi inglizcha "at" deb o'qiladi — o'zgaruvchi nomi atIndeks shundan.
Nega nuqtani @ dan keyin qidirdik? Ismning o'zida ham nuqta bor (malika.karimova). Oddiy includes(".") uni ham hisoblab, malika.karimova@mailuz kabi xato manzilni ham "to'g'ri" deb qo'yardi.
email ni "ali@@mail.uz" ga o'zgartirib ko'ring: bittami false bo'ladi. Real loyihalarda email bundan ham qat'iyroq tekshiriladi — buni regex va formalar darslarida ko'ramiz.
11. Real ishda
- Qidiruv maydoni. Onlayn do'konda "telefon" deb yozsangiz, nomida shu so'z bor mahsulotlar chiqadi. Ichida —
toLowerCase()vaincludes. - Telegram bot. Har bir xabar
startsWith("/")bilan tekshiriladi: buyruqmi yoki oddiy matnmi. - Havolalar.
url.startsWith("https://")— sayt manzili xavfsiz ulanishdan foydalanadimi. - Fayl yuklash.
endsWith(".pdf")— birinchi tez tekshiruv. Serverda fayl ichi alohida tekshiriladi, chunki nomni har kim o'zgartira oladi.
Intervyularda ko'p so'raladigan savollar: "includes va indexOf farqi nima?" va "indexOf natijasini shartga qo'ysa nima bo'ladi?" Endi ikkalasiga ham javob bera olasiz.
Xulosa
- Metod — qiymatga biriktirilgan tayyor amal:
qiymat.nom(argument). Qavssiz u ishlamaydi. includes,startsWith,endsWith—trueyokifalseqaytaradi.indexOfvalastIndexOf— indeks qaytaradi, topilmasa-1.indexOfnatijasini to'g'ridan-to'g'ri shartga qo'ymang:0— falsy,-1— truthy.- Hamma qidirish metodlari katta-kichik harfni farqlaydi. Harfdan qat'i nazar qidirish uchun
toLowerCase()zanjiri ishlatiladi. searchargumentni regex deb tushunadi — oddiy matn uchunindexOfyokiincludesishlating.
Keyingi dars: Kesish, bo'lish va to'ldirish — indeksni topishni o'rgandik, endi shu indeks bo'yicha matndan bo'lak kesib olamiz va matnni bo'laklarga ajratamiz.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!