
С выходом стандарта ES6 разработчики получили множество новшеств, в том числе для работы с массивами. Один из новых методов позволяет легко найти последний элемент массива JavaScript с нужным значением.
Includes()
Одним из новых методов является includes(), который принимает искомый элемент в качестве аргумента и возвращает true или false. Рассмотрим такой пример.
let cars = ['BMW', 'Volkswagen', 'Opel', 'Nissan']; cars.includes('Volkswagen'); // returns true cars.includes(‘Ferrari’); // returns false
IndexOf()
В js есть метод indexOf(), который возвращает индекс первого элемента в массиве, соответствующего указанному значению (или -1, если он не найден). Вторым параметром (необязательный) можно указать индекс, с которого начнется поиск. Но что, если необходимо получить последний элемент в массиве JavaScript с заданным значением?
let cars = ['BMW', 'Volkswagen', 'Opel', 'Nissan', ‘Lada’, ‘Mitsubishi’, ‘Volvo’]; // найдем Opel cars.indexOf('Opel'); // returns 2 // найдем Bugatti cars.indexOf(‘Bugatti’); // returns -1
С помощью indexOf() можно осуществлять проверку на наличие нужного элемента в массиве. Для этого достаточно проверить, является ли возвращаемое значение больше -1.
if (cars.indexOf(‘Opel’) > -1) { console.log(‘Элемент найден’); } else { console.log(‘Элемент не найден’); }
LastIndexOf()
В этом случае нас выручит метод lastIndexOf(). Как следует из названия, он возвращает индекс последнего элемента массива в JavaScript с заданным значением (или число -1, если совпадений не обнаружено).
let cars = ['BMW', 'Volkswagen', 'Opel', 'Nissan', ‘Lada’, ‘Mitsubishi’, ‘Volvo’]; // найдем Opel cars.lastIndexOf('Opel'); // returns 6 // найдем Bugatti cars.lastIndexOf('Bugatti'); // returns -1
Он также позволяет установить индекс элемента, с которого будет начинаться поиск. Для этого он принимает второй параметр — fromIndex (необязательный). Поиск осуществляется с конца массив js и по умолчанию используется индекс последнего элемента (array.length — 1). Оба метода чувствительны к регистру символов.
Кроссбраузерность
Includes() работает во всех современных браузерах, но только не в IE. Если требуется его поддержка от 9 версии и выше, то без полифила не обойтись.
IndexOf() воспринимается всеми современными браузерами, в том числе IE9+.