JavaScript метод findIndex()
JavaScript ArrayОпределение и применение
JavaScript метод findIndex() возвращает значение индекса элемента в массиве, который соответствует условию в переданной функции, или -1, если ни один элемент не удовлетворяет условию в переданной функции.
Обращаю Ваше внимание, что функция обратного вызова, переданная в качестве параметра метода findIndex() не будет вызвана для пропущенных элементов массива. Метод findIndex() не изменяет массив для которого он был вызван.
Диапазон элементов, обрабатываемых с помощью метода findIndex() устанавливается перед первым вызовом функции обратного вызова. Если элементы были добавлены к массиву после её вызова, то на таких элементах функция вызвана не будет.
Если значения существующих элементов массива изменяются в момент выполнения, то в качестве передаваемого значения функции будет значение в тот момент времени, когда метод findIndex() посещает их.
Поддержка браузерами
Метод | Chrome | Firefox | Opera | Safari | IExplorer | Edge |
---|---|---|---|---|---|---|
findIndex() | 45.0 | 25.0 | 32.0 | 7.1 | Нет | 12.0 |
JavaScript синтаксис:
// только с callback функцией array.findIndex( function( currentValue, index, arr ) ); // с использованием объекта, на который может ссылаться ключевое слово this array.findIndex( function( currentValue, index, arr ), thisValue );
Версия JavaScript
ECMAScript 2015 (6th Edition)Значения параметров
Параметр | Описание |
---|---|
function | Функция обратного вызова, которая будет выполнена один раз для каждого элемента в массиве, пока не вернет логическое значение true, или достигнет конца массива, возвращая при этом -1. Функция принимает следующие параметры:
Если в качестве параметра метода передается что-то, что не является объектом функции, то будет вызвано исключение TypeError. Обязательный параметр. |
thisValue | Объект, на который может ссылаться ключевое слово this внутри функции обратного вызова. Если параметр thisValue не используется, то в качестве значения this будет использоваться undefined (в конечном счете this будет зависеть от обычных правил контекста выполнения функции). Необязательный параметр. |
Пример использования
В следующем примере с использованием JavaScript метода find() мы проверим содержится ли в массиве число меньше ноля:
var array = [1, -2, 3, -4]; // инициализируем переменную, содержащую массив числовых значений array.findIndex( // находим индекс необходимого элемента в массиве function checkNumber( currentValue ) { return currentValue == 3; // проверяем является ли текущее значение равное трем } // если условие выполняется, то возвращаем индекс этого элемента, если достигнут конец массива, то -1 );// возвращаемое значение 2 // аналогично с использованием стрелочной функции array.findIndex( currentValue => currentValue == 3 ); // возвращаемое значение 2 array.findIndex( currentValue => currentValue == -3 ); // возвращаемое значение -1
В следующем примере мы рассмотрим использование второго аргумента метода findIndex(), который указывает на объект, на который мы можем ссылаться с использованием ключевого слова this внутри функции обратного вызова:
var numbers = [1, -2, 3, -4]; // инициализируем переменную, содержащую массив числовых значений var myObject = { // инициализируем переменную, содержащую объект checkNumber: function( currentValue ) { // метод объекта, который принимает значение return currentValue == 3; // проверяем является ли текущее значение равное трем } }; numbers.findIndex( // находим индекс необходимого элемента в массиве function( currentValue ) { return this.checkNumber( currentValue ); // возвращаемое значение метода checkNumber объекта myObject }, myObject // объект, на который мы ссылаемся с использованием ключевого слова this ); // если условие выполняется, то возвращаем индекс этого элемента, если достигнут конец массива, то -1 // возвращаемое значение 2JavaScript Array