[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf [Back]  [Original]

Array.prototype.indexOf() - JavaScript | MDN

Esta pgina foi traduzida do ingls pela comunidade. Saiba mais e junte-se comunidade MDN Web Docs.

View in English Always switch to English

Array.prototype.indexOf()

Baseline
Widely available

This feature is well established and works across many devices and browser versions. Its been available across browsers since julho de 2015.

O mtodo indexOf() retorna o primeiro ndice em que o elemento pode ser encontrado no array, retorna -1 caso o mesmo no esteja presente.

In this article

Experimente

const beasts = ["ant", "bison", "camel", "duck", "bison"];

console.log(beasts.indexOf("bison"));
// Expected output: 1

// Start from index 2
console.log(beasts.indexOf("bison", 2));
// Expected output: 4

console.log(beasts.indexOf("giraffe"));
// Expected output: -1

Sintaxe

array.indexOf(elementoDePesquisa, [pontoInicial = 0])

Parmetros

elementoDePesquisa

Elemento 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 no ser procurado. Se o pontoInicial fornecido com um nmero negativo, tomado como deslocamento da extremidade do array. Nota: se o pontoInicial fornecido negativo, a procura no array acontece de frente para trs. Se o pontoInicial fornecido 0, ento o array inteiro ser pesquisado. Padro: 0 (pesquisa em todo array).

Descrio

indexOf() compara o elementoDePesquisa com os elementos do Array usando igualdade estrita (o mesmo mtodo usado pelo ===, ou triple-equals operator).

Exemplos

Usando indexOf()

O exemplo seguinte usa indexOf() para localizar valores em um array

js
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 ocorrncias de um elemento

js
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]

Encontrar se um elemento existe ou no e atualizar o array

js
function atualizarColecaoVegetais(vegetais, vegetal) {
  if (vegetais.indexOf(vegetal) === -1) {
    vegetais.push(vegetal);
    console.log("Nova coleo de vegetais  : " + vegetais);
  } else if (vegetais.indexOf(vegetal) > -1) {
    console.log(vegetal + " j existe na coleo de vegetais.");
  }
}

var vegetais = ["batata", "tomate", "pimenta", "pimentao"];

atualizarColecaoVegetais(vegetais, "espinafre");
// Nova coleo de vegatais  : batata,tomate,pimenta,pimentao,espinafre
atualizarColecaoVegetais(vegetais, "espinafre");
// espinafre j existe na coleo de vegetais.

Polyfill

indexOf() foi adicionado ao ECMA-262 standard em sua 5 edio; como tal, no 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 no possuir suporte nativo. Esse algoritmo corresponde ao especificado no ECMA-262, edio 5, assumindo TypeError e Math.abs() tem seus valores originais.

js
// Passos para a produo do ECMA-262, Edition 5, 15.4.4.14
// Referncia: http://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 no foi definido (undefined)',
      );
    }

    var O = Object(this);

    // 2. Deixar o tamanhoValor ser o resultado da
    // chamada do mtodo 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 mtodo
      //    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
      //        Comparao 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;
  };
}

Especificaes

Specification
ECMAScript 2027 LanguageSpecification
# sec-array.prototype.indexof

Compatibilidade com navegadores

Veja tambm


Web Proxy Viewer  |  New URL  |  Original Page