Resumen
Devuelve el primer índice en el que se encuentra un elemento dado, o -1 si el elemento no se encuentra.
Sintaxis
array.indexOf(searchElement[, fromIndex])
Parámetros
searchElement
- Elemento a encontrar en el array.
fromIndex
- Indica el índice por el que se comienza la búsqueda. Por defecto es 0, por lo que se busca en todo el array. Si el índice es mayor o igual a la longitud del array, devuelve -1, ya que no se buscaría en el array. Si el valor es negativo, se toma restando posiciones desde el final del array. Hay que tener en cuenta que aunque el índice sea negativo, la búsqueda seguirá realizándose en un orden incremental. Si el índice calculado es menor de 0, la búsqueda se realizará por todo el array.
Descripción
indexOf
compara searchElement
con los elementos del array usando igualdad estricta (el mismo método que cuando se usa ===, o el operador igualdad-triple).
Compatibilidad
indexOf
es una incorporación reciente al estándar ECMA-262; por tanto no está implementado en todos los navegadores. Puedes hacerlo funcionar insertando el siguiente código al comienzo de tus scripts, permitiendo usar indexOf
en implementaciones que no lo soporten de forma nativa. Este algoritmo es exáctamente el especificado en ECMA-262, 5ª edición, asumiendo Object
, TypeError
, Number
, Math.floor
, Math.abs
, y Math.max
tienen sus valores originales.
if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) { "use strict"; if (this == null) { throw new TypeError(); } var t = Object(this); var len = t.length >>> 0; if (len === 0) { return -1; } var n = 0; if (arguments.length > 1) { n = Number(arguments[1]); if (n != n) { // para verificar si es NaN n = 0; } else if (n != 0 && n != Infinity && n != -Infinity) { n = (n > 0 || -1) * Math.floor(Math.abs(n)); } } if (n >= len) { return -1; } var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); for (; k < len; k++) { if (k in t && t[k] === searchElement) { return k; } } return -1; } }
Ejemplos
Ejemplos: Usando indexOf
El siguiente ejemplo usa indexOf
para localizar valores dentro de un array.
var array = [2, 5, 9]; var index = array.indexOf(2); // index es 0 index = array.indexOf(7); // index es -1
Ejempo: Todas las posiciones de un elemento
El siguiente ejemplo usa indexOf
para encontrar todos los índices de un elemento en un array, usando push
para añadirlos a otro array.
var indices = []; var idx = array.indexOf(element); while (idx != -1) { indices.push(idx); idx = array.indexOf(element, idx + 1); }
Compatibilidad con navegadores
Característica | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Soporte básico | (Yes) | (Yes) | 9 | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Soporte básico | ? | ? | ? | ? | ? | ? |