6/04/2011

El método indexOf de javascript

El método o función indexOf de los arrays de javascript, sirve para obtener el índice o posición de un elemento dado en un array.

Algunos navegadores como Internet Explorer 8 no cuentan con la definición de la función nativamente por lo que antes de utilizarla la debemos definir. Tomaremos la definición que se encuentra en la documentación de Javascript de la fundación Mozilla y luego veremos algunos ejemplos de su uso:

  if (!Array.prototype.indexOf)
  {
    Array.prototype.indexOf = function(searchElement /*, fromIndex */)
    {
      "use strict";
      if (this === void 0 || 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 > 0)
      {
        n = Number(arguments[1]);
        if (n !== n) 
          n = 0;
        else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0))
          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;
    };
  }
  
  var array = [1,2,3,4];
  log('En array el elemento 2 se encuentra en la posición: ' +  array.indexOf(2));
  log('En array el elemento 4 se encuentra en la posición: ' +  array.indexOf(4));
  log('En array el elemento 1 se encuentra en la posición: ' +  array.indexOf(1));
  log('En array el elemento 0 no se encuentra, indexOf devuelve: ' +  array.indexOf(0)); // -1

Hay que tener en cuenta que como se ve en la definición de indexOf anterior, el operador que se utiliza para saber si un elemento está incluído o no es: === y no ==, por lo que la comparación de tipos también se realiza y por ejemplo la búsqueda de false como elemento no dará como resultado el índice de un 0 o un string vacío, algo que si ocurriría si se utilizara == como operador de comparación de igualdad.

0 comentarios:

Juga al truco peronista