los indexOf() El método devuelve el primer índice en el que se puede encontrar un elemento dado en el array, o -1 si no está presente.

Sintaxis

indexOf(searchElement)indexOf(searchElement, fromIndex)

Parámetros

searchElement
Elemento para ubicar en el array.
fromIndexOpcional
El índice en el que comenzar la búsqueda. Si el índice es mayor o igual que el arrayse devuelve la longitud de -1, lo que significa que array no se buscará. Si el valor del índice proporcionado es un número negativo, se toma como el desplazamiento desde el final del array. Nota: si el índice proporcionado es negativo, el array todavía se busca de adelante hacia atrás. Si el índice proporcionado es 0, entonces el array será buscado. Predeterminado: 0 (completo array se busca).

Valor devuelto

El primer índice del elemento en el array; -1 si no se encuentra.

Descripción

indexOf() compara searchElement a los elementos de la matriz utilizando igualdad estricta (el mismo método utilizado por el === o operador triple-igual).

Nota: Para el método String, consulte String.prototype.indexOf().

Ejemplos de

Usando indexOf ()

El siguiente ejemplo utiliza indexOf() para localizar valores en un array.

var array =[2,9,9];
array.indexOf(2);// 0
array.indexOf(7);// -1
array.indexOf(9,2);// 2
array.indexOf(2,-1);// -1
array.indexOf(2,-3);// 0

Encontrar todas las apariciones de un elemento

var indices =[];var array =['a','b','a','c','a','d'];var element ='a';var idx = array.indexOf(element);while(idx !=-1)
  indices.push(idx);
  idx = array.indexOf(element, idx +1);
console.log(indices);// [0, 2, 4]

Encontrar si un elemento existe en el array o no y actualizando el array

functionupdateVegetablesCollection(veggies, veggie)if(veggies.indexOf(veggie)===-1)
        veggies.push(veggie);
        console.log('New veggies collection is : '+ veggies);elseif(veggies.indexOf(veggie)>-1)
        console.log(veggie +' already exists in the veggies collection.');var veggies =['potato','tomato','chillies','green-pepper'];updateVegetablesCollection(veggies,'spinach');// New veggies collection is : potato,tomato,chillies,green-pepper,spinachupdateVegetablesCollection(veggies,'spinach');// spinach already exists in the veggies collection.

Polyfill

indexOf() se agregó al estándar ECMA-262 en la 5ª edición; como tal, puede que no esté presente en todos los navegadores. Puede solucionar esto utilizando el siguiente código al comienzo de sus scripts. Esto te permitirá usar indexOf() cuando todavía no hay soporte nativo. Este algoritmo coincide con el especificado en ECMA-262, 5.a edición, asumiendo TypeError y Math.abs() tienen sus valores originales.

// This version tries to optimize by only checking for "in" when looking for undefined and// skipping the definitely fruitless NaN search. Other parts are merely cosmetic conciseness.// Whether it is actually faster remains to be seen.if(!Array.prototype.indexOf)Array.prototype.indexOf =(function(Object, max, min)"use strict"returnfunctionindexOf(member, fromIndex)0, Len)if(i <0) i =max(0, Len + i)elseif(i >= Len)return-1if(member ===void0)// undefinedfor(; i !== Len;++i)if(that[i]===void0&& i in that)return i
      elseif(member !== member)// NaNreturn-1// Since NaN !== NaN, it will never be found. Fast-path it.else// all elsefor(; i !== Len;++i)if(that[i]=== member)return i

      return-1// if the value was not found, then return -1)(Object, Math.max, Math.min)

Sin embargo, si está más interesado en todos los pequeños detalles técnicos definidos por el estándar ECMA, y está menos preocupado por el rendimiento o la concisión, entonces puede encontrar que este polyfill más descriptivo sea más útil.

// Production steps of ECMA-262, Edition 5, 15.4.4.14// Reference: https://es5.github.io/#x15.4.4.14if(!Array.prototype.indexOf)Array.prototype.indexOf=function(searchElement, fromIndex)"use strict";var k;// 1. Let o be the result of calling ToObject passing//    the this value as the argument.if(this==null)thrownewTypeError('"this" is null or not defined');var o =Object(this);// 2. Let lenValue be the result of calling the Get//    internal method of o with the argument "length".// 3. Let len be ToUint32(lenValue).var len = o.length >>>0;// 4. If len is 0, return -1.if(len ===0)return-1;// 5. If argument fromIndex was passed let n be//    ToInteger(fromIndex); else let n be 0.var n = fromIndex ;

Especificaciones

Especificación
Especificación del lenguaje ECMAScript (ECMAScript)
#segundo-array.prototype.indexof

Compatibilidad del navegador

Escritorio Móvil
Cromo Borde Firefox explorador de Internet Ópera Safari WebView Android Chrome Android Firefox para Android Opera Android Safari en IOS Internet de Samsung
indexOf 1 12 1,5 9 9.5 3 ≤37 18 4 10.1 1 1.0

Ver también

  • Array.prototype.lastIndexOf()
  • TypedArray.prototype.indexOf()
  • String.prototype.indexOf()