domingo, 2 de noviembre de 2008

Buscar un elemento en un arreglo con JS



Existe en php una funcion que nos permite buscar un elemento en un arreglo, sin embargo a la hora de querer realizar esto en js nos encontramos con que no hay un metodo parecido, ya se que es facil implementar esta funcion y san se acabo sin mas escandalo, sin embargo lo interesante que les voy a comentar es como hacerlo a traves de prototype ya se que no es nada del otro mundo pero puede que muchos no lo conozcan y creanme es una gran herramienta.

Prototype es un procedimiento que nos permite agregarle metodos a nuestros objetos y claro que esto tambien aplica a objetos tales como document, array, navigator etc, y ahi es donde radica su importancia, con esto podemos crear una libreria con los metodos mas utiles propios de otros lenguajes y que no hallan su equivalente en javaScript.
Veamos entonces como podemos hacer dicha implementacion:

Array.prototype.in_array = function(p_val) {
for(var i = 0, l = this.length; i <>
if(this[i] == p_val) {
return true;
}
}
return false;
}//fin de la inclusion


Observemos ahora:
En:Array.prototype.in_array = function(p_val) {
Primero seleccionamos en que objeto vamos a integrar el nuevo metodo, en este caso es sobre el objeto Array despues ponemos la palabra prototype que indica que lo que vamos a hacer es agregar un nuevo metodo sobre el objeto array, a continuación declaramos en nombre del nuevo metodo, este puede ser cualquiera solo hay que asegurarnos de que sea intuitivo y facil de recordar ;), en este caso le pusimos in_array, posteriormente declaramos una funcion donde podremos poner todos los parametros que decidamos admitir y finalmente creamos el cuerpo de nuestra funcion como si se tratara de cualquier otra.


Lo que hacemos a continuacion es facil de deducir, creamos un ciclo e inicializamos dos variables una con 0 y la otra con el valor de la longitud del arreglo, despues hacemos un recorrido por el arreglo buscando en cada celda si su contenido es igual a la palabra, numero o caracter buscado, en este caso dicho caracter nos llega en forma de parametro y lo recibe la variable p_val si el caracter es encontrado regresamos verdadero sin embargo si termina de recorrer todo el arreglo sin encontrar el caracter simplemente nos regresa un falso.

for(var i = 0, l = this.length; i <>
if(this[i] == p_val) {
return true; }
}
return false;


Para finalizar provamos nuestro metodo creando una variable tipo arreglo y haciendo una busqueda , si observamos bien la forma de llamar a estos metodos es poniendo el nombre de la variable seguido de un punto y el nombre de nuestro metodo seguido de sus parametros en caso de que los halla.

var v_array = [ 5, 10, 15, 20, 25];
document.writeln(v_array.in_array(10)); // true
document.writeln(v_array.in_array(11)); // false