Esta tradução está incompleta. Ajude atraduzir este artigo.
O método
indexOf() retorna o primeiro índice em que o elemento pode ser encontrado no array, retorna -1 caso o mesmo não esteja presente.Sintaxe
array.indexOf(elementoDePesquisa[, pontoInicial = 0])
Parâmetros
elementoDePesquisaElemento a ser pesquisado no array.pontoInicial- O índice para iniciar a procura. Se o índice for maior ou igual ao tamanho do array, é retornado -1 e signfica que o item não será procurado. Se o
pontoInicial é fornecidocom um número negativo, é tomado como deslocamento da extremidade do array. Nota: se opontoInicialfornecido é negativo, a procura no array acontece de frente para trás. Se opontoInicialcalculado é menor que 0, então o array inteiro será pesquisado. Padrão: 0 (pesquisa em todo array).
Descrição
indexOf() compara o elementoDePesquisa com os elementos do Array usando igualdade estrita (o mesmo método usado pelo ===, ou triple-equals operator).
Exemplos
Usando indexOf()
Seguindo o exemplo de uso do indexOf() para localizar valores em um array.
var array = [2, 5, 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 as ocorrências de um elemento
var indices = [];
var array = ['a', 'b', 'a', 'c', 'a', 'd'];
var elemento = 'a';
var idx = array.indexOf(elemento);
while (idx != -1) {
indices.push(idx);
idx = array.indexOf(elemento, idx + 1);
}
console.log(indices);
// [0, 2, 4]
Polyfill
indexOf() foi adicionado ao ECMA-262 standard em sua 5 edição; como tal, não pode estar presente em todos navegadores.Você pode contornar isso utilizando o seguinte codigo no inicio de seus scripts. Isto permitirá que voce use o indexOf() quando não possuir suporte nativo. Esse algoritmo corresponde ao especificado no ECMA-262, edição 5, assumindo TypeError e Math.abs() tem seus valores originais.
// Passos para a produção do ECMA-262, Edition 5, 15.4.4.14
// Referência: https://es5.github.io/#x15.4.4.14
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function(elementoDePesquisa, pontoInicial) {
var k;
//1. Deixe-o ser o resultado da chamada de toObject
// passando o valor de this como argumento.
if (this == null) {
throw new TypeError('"this" é nulo (null) ou não foi definido (undefined');
}
var O = Object(this);
// 2. Deixar o tamanhoValor ser o resultado da
// chamada do método interno Get de 0 com o
// argumento "length"
// 3. Deixar o tamanhoValor ser um ToUint32(tamanhoValor).
var tamanho = O.length >>> 0;
// 4. se o tamanho é 0, retorna -1.
if (tamanho === 0) {
return -1;
}
// 5. Se o argumento pontoInicial for passado, use o ToInteger(pontoInicial); senao use 0.
var n = + pontoInicial || 0;
if (Math.abs(n) === Infinity) {
n = 0;
}
//6. Se n >= tamanho, retorna -1.
if (n >= tamanho) {
return -1;
}
// 7. Se n>= 0, entao k seja n.
// 8. Senao, n<0, k seja tamanho - abs(n).
// Se k é menor que 0, entao k seja 0.
k = Math.max(n >= 0 ? n : tamanho - Math.abs(n), 0);
// 9. Repita, enquanto k < tamanho
while (k < tamanho) {
// a. Deixe Pk ser ToString(k).
// isto é implicito para operandos LHS de um operador
// b. Deixe o kPresent ser o resultado da chamada do método interno de 0 com argumento Pk
// Este passo pode ser combinado com c.
// c. Se kPresent é true, entao
// i. Deixe o elementK ser o resultado da chamada do metodo interno Get de 0 com argumento ToString(k)
// ii. Deixe o resultado ser aplicado pelo Algoritmo de
// Comparação de Igualdade Estrita (Strict Equality Comparison) para o elementoDePesquisa e elementK
// iii. caso verdadeiro, retorne k.
if (k in O && O[k] === elementoDePesquisa) {
return k;
}
k++;
}
return -1;
};
}
Especificações
| Especificação | Status | Comentários |
|---|---|---|
| ECMAScript 5.1 (ECMA-262) The definition of 'Array.prototype.indexOf' in that specification. |
Standard |
Definição inicial implementada no Javascript 1.6. |
| ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'Array.prototype.indexOf' in that specification. |
Standard |
Compatibilidade entre Navegadores
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Suporte Básico | (Yes) | 1.5 (1.8) | 9 | (Yes) | (Yes) |
| Feature | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| Suporte Básico | (Yes) | (Yes) | 1.0 (1.8) | (Yes) | (Yes) | (Yes) |
Veja também
Etiquetas do documento e colaboradores
Última atualização por:
brunoluigi,