Publicado por el

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...

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:

[code lang=»javascript»]
// 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; }; } [/code] Podemos probarlo utilizando el siguiente código: [code lang="javascript"] var arreglo = new Array("a","b","c","d"); var posicion = arreglo.indexOf("d"); alert(posicion); [/code]

lastIndexOf

Devuelve la posición del último elemento encontrado en un arreglo dependiendo de determinado valor.

[code lang=»javascript»]

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;
};
}

[/code]

Ejemplo de uso:

[code lang=»javascript»]

var arreglo = new Array(«a»,»d»,»c»,»d»);

var posicion = arreglo.lastIndexOf(«d»);

alert(posicion);

[/code]

forEach

El forEach que nos permite aplicarle una función a cada elemento de un arreglo.

[code lang=»javascript»]

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); } }; } [/code] Ejemplo de uso: [code lang="javascript"] var arreglo = new Array("a","b","c","d"); var posicion = arreglo.indexOf("d"); arreglo.forEach(function(j){alert(j);}); [/code]

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

[code lang=»javascript»]

Array.prototype.unique = function( b ) {
var a = [], i, l = this.length;
for( i=0; iRandom

Obtener un valor aleatorio de un arreglo.

[code lang=»javascript»]

// 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 ) ];
};

[/code]

Ejemplo de uso:

[code lang=»javascript»]

var arreglo = new Array(«a»,»b»,»c»,»d»);
alert(arreglo.random());

[/code]

Pueden ver otros métodos aquí

Core Javascript 1.5 Reference:Object Array

Últimas noticias en WebAdictos