Úvod do úlohy

Vyhledávání textu nebo prvků v JavaScriptu je velmi častá operace — používá se při ověřování vstupů, filtrování dat, práci s formuláři, validaci e-mailů, nebo třeba při kontrole, jestli řetězec obsahuje určité slovo.
Pro tyto situace nám JavaScript nabízí tři užitečné metody: .indexOf(), .search() a .includes().

Na první pohled všechny tři dokážou „najít text“, ale každá se chová trochu jinak.

  • .indexOf() a .search() vracejí číslo – pozici, kde se hledaný text poprvé vyskytuje.

  • .includes() vrací true/false – jednoduše říká, zda text obsahuje hledaný výraz.

Tím pádem se .includes() často používá tam, kde nepotřebujeme znát přesnou pozici, ale jen ověřit, zda text existuje.


Teorie a principy

.indexOf()

  • Hledá přesný text v řetězci nebo poli.

  • Vrací index prvního výskytu nebo -1, pokud nebyl nalezen.

  • Umí začít hledat od určité pozice (druhý parametr).

  • Je citlivá na velikost písmen.

Syntaxe:

.search()

  • Funguje podobně jako .indexOf(), ale navíc umí používat regulární výrazy.

  • Vrací také index prvního výskytu nebo -1.

  • Neumožňuje zadat počáteční pozici hledání.

Syntaxe:

.includes()

  • Nejjednodušší metoda na ověření, zda text (nebo pole) něco obsahuje.

  • Vrací pouze true (ano) nebo false (ne).

  • Je čitelnější než .indexOf() tam, kde nepotřebujeme znát pozici.

  • Je také citlivá na velikost písmen.

Syntaxe:


Praktické příklady kódu

1. .indexOf() – získání pozice slova

2. .search() – vyhledávání pomocí regulárního výrazu

3. .includes() – kontrola, jestli text obsahuje výraz

4. .includes() na poli


Porovnání metod

Metoda Vrací Umí regulární výrazy Lze určit startIndex Citlivá na velikost písmen
.indexOf() Číslo (index nebo -1) ❌ Ne ✅ Ano ✅ Ano
.search() Číslo (index nebo -1) ✅ Ano ❌ Ne ✅ Ano
.includes() Boolean (true/false) ❌ Ne ✅ Ano ✅ Ano

Typické chyby a záludnosti

  1. Záměna návratových hodnot
    .indexOf() a .search() vrací číslo, zatímco .includes() vrací true/false.
    Pokud omylem porovnáte .indexOf() s true, kód nebude fungovat.

  2. Citlivost na velikost písmen
    Všechny tři metody rozlišují velká a malá písmena.
    Chcete-li hledat bez ohledu na velikost, převeďte text na malá:

  3. Zapomenutí na kontrolu -1 u .indexOf() nebo .search()
    Pokud se výraz nenajde, obě metody vracejí -1, což je třeba ošetřit podmínkou.

  4. Použití regulárního výrazu u .includes()
    .includes() podporuje pouze běžný text, ne regulární výrazy – k tomu slouží .search().


Shrnutí

  • .indexOf() – zjistí kde se výraz nachází (index).

  • .search() – najde výraz podle vzoru (RegExp).

  • .includes() – rychle zjistí, zda text výraz obsahuje (true/false).

  • Všechny tři metody jsou citlivé na velikost písmen.

  • .includes() je ideální pro jednoduché podmínky, .search() pro pokročilé vyhledávání a .indexOf() pro práci s pozicemi textu nebo prvků v poli.