Contenido

Añadiendo indexOf a los Array en javascript

9 dic

+ 6

En los comentarios de las 10 mejores funciones Javascript leo:

 

Tomas: […]

Tengo un array donde el elemento 0 es “hola” el elemento 1 es “mundo” …

Si doy como infomacion “mundo” quiero que el script me responda :

“‘mundo’ es el elemento x del array’

donde x sea el índice que le corresponde a “mundo” en el array.

[…]

Osea, montar un indexOf para arrays, pues vamos allá. Creo que esto puede servir.

Array.prototype.indexOf = function(s) {
	for (var x=0;x<this.length;x++) if(this[x] == s) return x;	
	return false;
}
var array = new Array("hola","adios","mono","manolete");

var it = array.indexOf("monos");
alert(it);

Como podemos ver, añadiendo el método al objeto Array , igual que hicimos con trim(), disponemos de él en cualquier objeto que creemos posteriormente. La función en si es bastante simple, únicamente recorremos el array saliendo de la función en el momento que lo encuentra, devolviendo el indice en el que se encuentra, sinó  lo encuentra nos devolverá false.

  • Lo malo es que si tenemos dos elementos iguales:

    var arr=[“naranja”,”manzana”,”pera”,”manzana”];

    Y hacemos un arr.indexOf(“manzana”) sólo obtendríamos “1”.

    Para devolver un array con todas las posiciones de “manzana” se podría utilizar esta función por ejemplo:

    Array.prototype.indexOf = function(s) {
    for(var x=0, dev=new Array(); x

  • Ojo con el bucle que no ha salido completo, el sistema habrá confundido el símbolo “menor que” con la apertura de un tag HTML y no continúa la línea. Es como la del ejemplo del post original ;-)

  • Con esta función, si el elemento buscado está en la primera posición del array… ¿funcionará? es decir, ¿no devolverá 0, que se evalúa a false?

  • #3 Devolverá 0, ya que es la primera posición del array.

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.