методы строк для поиска подстроки в JS indexOf() находит индекс первого совпадения при движении слева направо lastIndexOf() определяет индекс последнего совпадения, выполняя поиск справа налево возвращают индекс первого символа найденного фрагмента либо -1, если совпадение отсутствует поддерживают необязательный параметр, задающий начальную позицию поиска (startIndex) учитывают регистр символов используются со строками и массивами, демонстрируя аналогичную логику
Как в JavaScript работают методы indexOf() и lastIndexOf()?
методы строк для поиска подстроки в JS indexOf() находит индекс первого совпадения при движении слева направо lastIndexOf() определяет индекс последнего совпадения, выполняя поиск справа налево возвращают индекс…
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Как в JavaScript работают методы indexOf() и lastIndexOf()?
- методы строк для поиска подстроки в JS
- indexOf() находит индекс первого совпадения при движении слева направо
- lastIndexOf() определяет индекс последнего совпадения, выполняя поиск справа налево
- возвращают индекс первого символа найденного фрагмента либо -1, если совпадение отсутствует
- поддерживают необязательный параметр, задающий начальную позицию поиска (startIndex)
- учитывают регистр символов
- используются со строками и массивами, демонстрируя аналогичную логику
Подробный ответ
Основной ответ
В JavaScript методы indexOf() и lastIndexOf() позволяют определить позицию подстроки в строке. В результате работы indexOf() возвращается индекс первого найденного вхождения, а lastIndexOf() указывает на последнее. Если искомое значение отсутствует, оба метода возвращают -1. Поиск выполняется с учётом регистра и основан на обычной проверке вхождения подстроки.
Ключевые моменты
- Направление поиска:
indexOf()просматривает строку от её начала и выдаёт индекс первого совпадения. В отличие от него,lastIndexOf()начинает проверку с конца и возвращает индекс последнего найденного вхождения. - Аргументы: каждому методу можно передать строку поиска и необязательную позицию, с которой следует начать проверку (
fromIndexдляindexOf,fromIndexс конца дляlastIndexOf). - Производительность: время выполнения обоих методов зависит от длины строки и описывается как
O(n). При работе с очень большими строками или множественными поисковыми операциями могут быть полезны альтернативы, включая регэкспы и индексы. - Типы данных: эти методы входят в прототип String, однако у массивов также есть соответствующие варианты с близкой логикой работы.
Практический контекст
В веб-разработке indexOf() обычно используют, чтобы проверить присутствие подстроки, например if (str.indexOf('test') !== -1), а lastIndexOf() помогает найти последний разделитель пути и отделить имя файла от расширения. Для более сложных сценариев в современных проектах иногда выбирают методы includes() или String.prototype.search() с регулярками, но для обычного поиска подстроки indexOf() по-прежнему остаётся наиболее простым и оптимальным решением.