JavaScriptNapisy

String.prototype.indexOf()

Zwraca indeks pierwszego wystąpienia podanego tekstu w napisie albo -1, gdy go nie ma.

Zwraca
Indeks pierwszego wystąpienia (liczba od 0) albo -1, gdy tekstu nie znaleziono.
Zmienia oryginał
Nie
Na tej stronie

Przykład

#
JavaScript
const text = 'Ucz się HTML, potem CSS, potem JavaScript'

console.log(text.indexOf('HTML'))
console.log(text.indexOf('potem'))
console.log(text.lastIndexOf('potem'))
console.log(text.indexOf('Python'))
Konsola
8
14
25
-1

Definicja i zastosowanie

#

Metoda indexOf() szuka fragmentu tekstu i zwraca pozycję jego pierwszego znaku. Indeksy liczą się od 0. Gdy fragmentu nie ma w napisie, wynikiem jest -1, dlatego wynik porównuj z -1, a nie traktuj go jak wartości logicznej.

Drugi argument określa indeks, od którego zaczyna się szukanie, co pozwala znaleźć kolejne wystąpienia w pętli. Siostrzana metoda lastIndexOf() przeszukuje tekst od końca i zwraca pozycję ostatniego wystąpienia.

Gdy potrzebujesz tylko odpowiedzi „jest czy nie ma”, czytelniejsze jest includes(). indexOf() przydaje się wtedy, gdy pozycja jest potrzebna dalej, np. do wycięcia fragmentu przez slice().

Składnia

#
Składnia
string.indexOf(searchString)
string.indexOf(searchString, position)
string.lastIndexOf(searchString)

Parametry

#
  • searchString

    string

    Szukany tekst. Wielkość liter ma znaczenie.
  • position

    number, opcjonalny

    Indeks, od którego zaczyna się szukanie. Domyślnie 0.

Więcej przykładów

#
Pułapka: sprawdzanie wyniku w if
JavaScript
const title = 'JavaScript'

if (title.indexOf('Java')) {
  console.log('Znaleziono')
} else {
  console.log('Nie znaleziono')
}

console.log(title.indexOf('Java') !== -1)
Konsola
Nie znaleziono
true

indexOf() zwróciło 0, a zero jest fałszywe, więc warunek trafił do else. Zawsze porównuj wynik z -1 albo użyj includes().

Liczenie wystąpień w pętli
JavaScript
const log = 'ok, błąd, ok, ok, błąd'
let count = 0
let position = log.indexOf('błąd')

while (position !== -1) {
  count++
  position = log.indexOf('błąd', position + 1)
}

console.log(count)
Konsola
2
Wycinanie na podstawie pozycji
JavaScript
const email = 'ola@example.com'
const at = email.indexOf('@')

console.log(email.slice(0, at))
console.log(email.slice(at + 1))
Konsola
ola
example.com

Obsługa przeglądarek

#

Szeroko dostępne

Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • Nigdy nie sprawdzaj wyniku przez if (text.indexOf(x)). Fragment znaleziony na samym początku daje 0, które jest fałszywe. Porównuj z -1.
  • Metoda rozróżnia wielkość liter. Aby szukać bez tego rozróżnienia, zamień oba napisy na małe litery.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.