Este articulo necesita una revisión editorial. Cómo puedes ayudar.
Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.
Revisar también el método find()
, que devuelve el valor de un elemento encontrado en el arreglo en vez de su indice.
Sintaxis
arr.findIndex(callback[, thisArg])
Parametros
callback
- Función para ejecutar en cada uno de los valores en el arreglo, tomando tres argumentos.
element
- El elemento actual siendo procesado por el arreglo..
index
- El indice del elemento actual que está siendo procesado en el arreglo.
array
- El arreglo
findIndex
de donde fue llamado.
thisArg
- Opcional. Objeto para usar como
this
cuando se ejecuta elcallback
.
Descripción
El método findIndex ejecuta la función de callback una vez por cada elemento existente en el arreglo hasta que encuentre uno adonde callback retorna un valor true. Si tal elemento es encontrado, findIndex inmediatamente retorna el índice de tal elemento. De otra forma, findIndex retorna -1. callback es invocado solomente por los índices del arreglo que tengan asignador valor determinado; No es invocadado por índices que hayan sido eliminados o que nunca se les haya asignado valor alguno.
callback
es invocado con tres argumentos: el valor del elemento, el índice del elemento y el Array que será recorrido.
Si el parámetro thisArg es provisto a findIndex, entonces será usado como el this para cada invocación del callback. Si no es provisto, entonces
será utilizado. undefined
findIndex
no altera el arreglo en el cual es llamado.
El alcance de los elementos procesados por findIndex
es establecido antes, por la primera invocación al callback. Elementos que son agregados al arreglo despúes de que la llamada a findIndex
comienza no serán visitados después por el callback. Si un existente elemento que no ha sido visitado cambia por el callback
, su valor pasado al callback será el valor en el momento en el que findIndex visite el índice del elemento. En caso de ser eliminados no serán visitados.
Ejemplos
Encontrar el índice de un número primo en un arreglo
El siguiente ejemplo encuentra el índice de un elemento en el arreglo que sea número primo (o retorna -1 si no hay ningún número primo).
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, no encontrado console.log([4, 6, 7, 12].findIndex(isPrime)); // 2
Polyfill
Este método ha sido agregado a la especificación de ECMASCRIPT 6 (ES6) y puede que no esté disponible en todas las implementacion de JavaScript aún. Sin embargo, usted puede usar polyfill Array.prototype.findIndex segmento:
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; }; }
Especificaciones
Especificación | Estado | Comentario |
---|---|---|
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Array.prototype.findIndex' in that specification. |
Standard | Definición inicial. |
ECMAScript 2017 Draft (ECMA-262) The definition of 'Array.prototype.findIndex' in that specification. |
Draft |
Compatibilidad con los navegadores
Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Soporte básico | 45.0 | 25.0 (25.0) | No support | No support | 7.1 |
Característica | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Soporte básico | No support | No support | 25.0 (25.0) | No support | No support | 8.0 |