This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Array.prototype.findIndex()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since сентябрь 2015 г..
Сводка
МетодfindIndex() возвращаетиндекс в массиве, если элемент удовлетворяет условию проверяющей функции. В противном случае возвращается -1.
Также смотрите методfind(), который возвращаетзначение найденного в массиве элемента вместо его индекса.
In this article
Синтаксис
arr.findIndex(callback[, thisArg])
Параметры
Описание
МетодfindIndex вызывает переданную функциюcallback один раз для каждого элемента, присутствующего в массиве, до тех пор, пока она не вернётtrue. Если такой элемент найден, методfindIndex немедленно вернёт индекс этого элемента. В противном случае, методfindIndex вернёт -1. Функцияcallback вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались.
Функцияcallback вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.
Если в методfindIndex был передан параметрthisArg, при вызовеcallback он будет использоваться в качестве значенияthis. В противном случае в качестве значенияthis будет использоваться значениеundefined.
МетодfindIndex не изменяет массив, для которого он был вызван.
Диапазон элементов, обрабатываемых методомfindIndex, устанавливается до первого вызова функцииcallback. Элементы, добавленные в массив после начала выполнения методаfindIndex, не будут посещены функциейcallback. Если существующие, непосещение элементы массива изменяются функциейcallback, их значения, переданные в функцию, будут значениями на тот момент времени, когда методfindIndex посетит их; удалённые элементы посещены не будут.
Примеры
>Пример: поиск индекса простого числа в массиве
Следующий пример находит в массиве индекс элемента, являющийся простым числом (либо возвращает -1, если в массиве нет простых чисел).
function isPrime(element, index, array) { var start = 2; while (start <= Math.sqrt(element)) { if (element % start++ < 1) { return false; } } return element > 1;}console.log([4, 6, 8, 12].findIndex(isPrime)); // -1, не найденоconsole.log([4, 6, 7, 12].findIndex(isPrime)); // 2Полифил
Этот метод был добавлен в спецификации ECMAScript 6 и пока может быть недоступен во всех реализациях JavaScript. Однако, вы можете использовать следующий кусочек кода в качестве полифила:
if (!Array.prototype.findIndex) { Array.prototype.findIndex = function (predicate) { if (this == null) { throw new TypeError( "Array.prototype.findIndex called on null or undefined", ); } if (typeof predicate !== "function") { throw new TypeError("predicate must be a function"); } var list = Object(this); var length = list.length >>> 0; var thisArg = arguments[1]; var value; for (var i = 0; i < length; i++) { value = list[i]; if (predicate.call(thisArg, value, i, list)) { return i; } } return -1; };}Спецификации
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype.findindex> |