Learn JavaScript

lastIndexOf() - метод для поиска последнего вхождения подстроки в строке в JavaScript

lastIndexOf() ищет подстроку в строке и возвращает индекс её последнего вхождения.

Если подстрока не найдена, метод вернёт -1.

Синтаксис

str.lastIndexOf(searchString)
str.lastIndexOf(searchString, position)

Метод вызывается у строки и возвращает число.

Как работает lastIndexOf()

const text = "banana";

console.log(text.lastIndexOf("a")); // 5
console.log(text.lastIndexOf("na")); // 4
console.log(text.lastIndexOf("x"));  // -1

Метод ищет справа налево, но возвращает обычный индекс найденного вхождения.

Позиция начала поиска

Во втором аргументе можно указать, с какого индекса начинать поиск назад.

const text = "banana";

console.log(text.lastIndexOf("a"));    // 5
console.log(text.lastIndexOf("a", 4)); // 3
console.log(text.lastIndexOf("a", 2)); // 1

Это полезно, если нужно искать не по всей строке, а только в её части.

Если подстрока не найдена

Если совпадения нет, lastIndexOf() вернёт -1.

const text = "JavaScript";

console.log(text.lastIndexOf("TypeScript")); // -1

Регистр важен

lastIndexOf() чувствителен к регистру.

const text = "JavaScript Java";

console.log(text.lastIndexOf("java")); // -1
console.log(text.lastIndexOf("Java")); // 11

Если нужен поиск без учёта регистра, строку обычно заранее приводят к одному формату.

const text = "JavaScript Java";

console.log(text.toLowerCase().lastIndexOf("java")); // 11

Когда это полезно

lastIndexOf() удобно использовать, когда:

  • нужно найти последнее вхождение подстроки
  • важно получить именно индекс
  • нужно искать с конца строки

Пример:

const file = "archive.backup.zip";

console.log(file.lastIndexOf(".")); // 14

Так часто находят позицию последней точки в имени файла.

lastIndexOf() и indexOf()

indexOf() ищет первое вхождение, а lastIndexOf() - последнее.

const text = "banana";

console.log(text.indexOf("a"));     // 1
console.log(text.lastIndexOf("a")); // 5

Если нужно искать с конца строки, lastIndexOf() подходит лучше.

Если подстрока пустая

Пустая строка тоже считается найденной.

const text = "hello";

console.log(text.lastIndexOf(""));   // 5
console.log(text.lastIndexOf("", 2)); // 2

Частые ошибки

Думать, что lastIndexOf() возвращает true или false

const text = "banana";

console.log(text.lastIndexOf("a")); // 5

Метод возвращает не булево значение, а индекс.

Путать направление поиска и возвращаемое значение

const text = "banana";

console.log(text.lastIndexOf("a")); // 5

Метод ищет справа налево, но результат всё равно остаётся обычным индексом в строке.

Забывать про -1

const text = "banana";

console.log(text.lastIndexOf("x")); // -1

Если совпадения нет, нужно проверять именно -1.

Быстрая памятка

  • lastIndexOf(searchString) возвращает индекс последнего вхождения
  • если подстрока не найдена, метод вернёт -1
  • можно указать позицию начала поиска назад
  • поиск чувствителен к регистру
  • если нужно первое вхождение, используют indexOf()

Коротко

lastIndexOf() - это метод строки в JavaScript, который ищет последнее вхождение подстроки и возвращает его индекс. Он полезен, когда нужно искать с конца строки, например последнюю точку, слэш или повторяющийся символ.