Работа с массивами стала намного легче после выхода стандарта ES6. Появились новые методы, один из которых позволяет найти последний элемент массива в JavaScript с заданным значением.
Includes()
Например, одним из новых методов является includes(), который принимает искомый элемент в качестве аргумента и возвращает true или false. Рассмотрим такой пример.
let cars = ['BMW', 'Volkswagen', 'Opel', 'Nissan'];
cars.includes('Volkswagen'); // returns true
cars.includes(‘Ferrari’); // returns false
Последний элемент массива JavaScript через 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(‘Элемент не найден’);
}
Читайте также: Как проверить объект на пустоту в JavaScript.
Последний элемент массива JavaScript с помощью 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() работает во всех современных браузерах, но только не в Internet Explorer. Если требуется его поддержка, то без полифила не обойтись. Стоит отметить, что IndexOf() и lastIndexOf() воспринимаются всеми современными браузерами, в том числе IE9+.