Array.prototype.indexOf()

by 2 contributors:

Resumen

Devuelve el primer índice en el que un 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 ObjectTypeErrorNumber, 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 ? ? ? ? ? ?

See also

Etiquetas y colaboradores del documento

Contributors to this page: teoli, AntonioNavajas
Última actualización por: teoli,
Ocultar la barra lateral