Métodos Útiles para Extender el Objeto Array en Javascript
El dia de ayer frogx3 se topo con un ligero problema en javascript con el objeto array ya que necesitaba obtener la posición de un elemento que coincida con un valor proporcionado. Con frameworks como Mootools, Protototype, jQuery (supongo) esto no habria sido problema pero ¿qué pasa cuando no puedes incluir ninguno de esos frameworks? pues tenemos la ventaja en Javascript que podemos añadirle eventos a los objetos nativos de javascript utilizando Prototype (Ojo no el framework) por lo que podriamos definir nuestros propios métodos de una manera sencilla. A continuación les presento una lista de algunos métodos útiles para extender el objeto Array en Javascript:
indexOf
Este método te devuelve la posición de un elemento dentro de un arreglo. Para agregarle este método al objeto array hacemos lo siguiente:
- // Array.indexOf( value, begin, strict ) – Regresa el indice del primer elemento que coincida con el valor especificado
- if (!Array.prototype.indexOf)
- {
- Array.prototype.indexOf = function( v, b, s ) {
- for( var i = +b || 0, l = this.length; i < l; i++ ) {
- if( this[i]===v || s && this[i]==v ) { return i; }
- }
- return -1;
- };
- }
Podemos probarlo utilizando el siguiente código:
- var arreglo = new Array("a","b","c","d");
- var posicion = arreglo.indexOf("d");
- alert(posicion);
lastIndexOf
Devuelve la posición del último elemento encontrado en un arreglo dependiendo de determinado valor.
- if (!Array.prototype.lastIndexOf)
- {
- Array.prototype.lastIndexOf = function(elt /*, from*/)
- {
- var len = this.length;
- var from = Number(arguments[1]);
- if (isNaN(from))
- {
- from = len - 1;
- }
- else
- {
- from = (from < 0)
- ? Math.ceil(from)
- : Math.floor(from);
- if (from < 0)
- from += len;
- else if (from >= len)
- from = len - 1;
- }
- for (; from > ; -1; from–)
- {
- if (from in this && this[from] === elt)
- return from;
- }
- return -1;
- };
- }
Ejemplo de uso:
- var arreglo = new Array("a","d","c","d");
- var posicion = arreglo.lastIndexOf("d");
- alert(posicion);
forEach
El forEach que nos permite aplicarle una función a cada elemento de un arreglo.
- if (!Array.prototype.forEach)
- {
- Array.prototype.forEach = function(fun /*, thisp*/)
- {
- var len = this.length;
- if (typeof fun != "function")
- throw new TypeError();
- var thisp = arguments[1];
- for (var i = 0; i < len; i++)
- {
- if (i in this)
- fun.call(thisp, this[i], i, this);
- }
- };
- }
Ejemplo de uso:
- var arreglo = new Array("a","b","c","d");
- var posicion = arreglo.indexOf("d");
- arreglo.forEach(function(j){alert(j);});
Unique
Elimina valores repetidos de un arreglo. este método utiliza el indexOf por lo que para utilizar previamente tenemos que definir el método indexOf
- Array.prototype.unique = function( b ) {
- var a = [], i, l = this.length;
- for( i=0; i<l; i++ ) {
- if( a.indexOf( this[i], 0, b ) < 0 ) { a.push( this[i] ); }
- }
- return a;
- };
Ejemplo de uso:
- var arreglo = new Array("a","d","c","d");
- var arreglo2 = arreglo.unique();
- alert(arreglo2);
Random
Obtener un valor aleatorio de un arreglo.
- // Array.random( rango) – Regresa un valor aleatorio del arreglo, se puede especificar un valor máximo de posicion.
- Array.prototype.random = function( r ) {
- var i = 0, l = this.length;
- if( !r ) { r = this.length; }
- else if( r > 0 ) { r = r % l; }
- else { i = r; r = l + r % l; }
- return this[ Math.floor( r * Math.random() - i ) ];
- };
Ejemplo de uso:
- var arreglo = new Array("a","b","c","d");
- alert(arreglo.random());
Pueden ver otros métodos aquí
Compartelo con tus amigos:
Compartelo!¿Te pareció interesante la nota?, registrate a nuestro Feed para que estes al dia con las últimas notas que publicamos en WebAdictos, tambien te invitamos a explorar nuestros archivos tal vez encuentres notas y recursos que te sean de utilidad.
Si lo prefieres puedes utilizar el botón de post aleatorio para ir saltando entre nuestros contenidos.
Gracias por visitarnos.



Agosto 17th, 20076:43 pm
[...] Lista de algunos métodos útiles para extender el objeto Array de Javascript» noticia original [...]
Agosto 22nd, 20072:46 am
[...] (more…) [...]
Septiembre 27th, 20079:57 pm
Use su función Array.indexOf y cuando creo un arreglo vacío (arr[]) en IE 6.0 me crea un objeto: arr['indexOf'] = declaración de la función. ¿Sabe por qué eso?
Septiembre 11th, 200912:00 pm
Utilice la funcion de Unique pero no me funciona en internet exlporer la siguiente linea
if( a.indexOf( this[i], 0, b ) < 0 )
Alguien sabe como lo puedo corregir ??
Gracias
Septiembre 11th, 200912:06 pm
A quien le pueda interesar, ya encontre la solucion al comentario anterior, aqui esta:
if(!Array.indexOf){
Array.prototype.indexOf = function(obj){
for(var i=0; i<this.length; i++){
if(this[i]==obj){
return i;
}
}
return -1;
}
}
Saludos !!!