Эффективный поиск по массивам при помощи методов includes и indexOf

Эффективный поиск по массивам при помощи методов includes и indexOf

От автора: поиск по массивам всегда предполагал написание сложного цикла, который проверял каждую ячейку на равенство переданному значению. В современном JavaScript есть два более эффективных способа: первый появился в JS в 2015 году, второй немного старше.

Метод includes

Начнем с самого молодого. Если просто, includes возвращает true, если переданное значение нашлось в массиве, и false, если его там нет. К примеру, у нас есть массив:

Определить, присутствует ли в массиве конкретное значение, очень просто. Для ясности тест проводился в консоли:

Обратите внимание, includes находит только целый элемент, а не вхождение в строку:

Поиск регистрозависимый:

Метод includes укажет, присутствует ли заданный элемент в массиве, но он не скажет вам, где он располагается. Однако вы можете задать стартовую точку поиска при помощи необязательного аргумента:

У метода includes довольно хорошая поддержка в последних версиях браузеров: Chrome 47, Firefox 43. Microsoft Edge и Safari 9. Метод не поддерживается в IE, но вы можете воспользоваться специальным полифилом polyfills.io. Из-за отсутствия в JS четко выраженной типизации данных метод includes можно применять и к строкам для нахождения слов, фраз и последовательностей символов.

Метод indexOf

Метод indexOf возвращает позицию найденного элемента в массиве. Возьмем тот же самый массив:

При помощи метода indexOf мы можем определить позицию элемента в массиве, который равен передаваемому значению:

Если элемент не найден, indexOf вернет -1:

Метод отлично поддерживается во всех современных браузерах, в том числе и в IE9+. Как и в методе includes, можно добавить необязательный аргумент со стартовой точкой для поиска.

Метод lastIndexOf

Метод indexOf находит первое совпадение с начала массива. А метод lastIndexOf начинает поиск с конца массива.

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

Источник: //thenewcode.com/

Редакция: Команда webformyself.

Метки:

Похожие статьи:

Комментарии Вконтакте: