Mootools trae una serie de Helpers para manejar Arreglos, hacen mucho mas simple todo lo que tenga que ver con recorrer, filtrar, buscar en arreglos, borrar, etc. Me refiero a la clase Array
each
1
2
3
4
5
6
| Arreglo.each(function(elemento, indice)
{
alert("Indice" + indice + " Elemento " + elemento);
},
bind
); |
each se utiliza para recorrer arreglos, por cada posición de nuestro arreglo se llama a la función que le pasamos por parámetro a each. Dicha función recibe por parámetros el valor de la posición actual del arreglo como así también su indice. Se puede ver mas claro con el siguiente ejemplo:
1
2
3
4
5
6
7
8
9
10
| var nombres = new Array("Juan", "Pedro", "Federico", "Martin", "Alejandro");
nombres.each(function(elemento, indice)
{
alert("nombres[" + indice + "] = '" + elemento + "'");
});
//nombres[0] = 'Juan'
//nombres[1] = 'Pedro'
//nombres[2] = 'Federico'
//... |
Ver ejemplo funcionando
filter
1
2
3
4
5
6
| var nuevoArreglo = Arreglo.filter(function(elemento, indice)
{
return elemento != "algo"; //condición
},
bind
); |
Con filter podemos filtrar un arreglo mediante una condición evitando así aquellos elementos que no necesitamos , retorna un arreglo con los elementos que cumplen con la condición. Para realizar el filtro podemos utilizar el valor de cada elemento, el indice o una combinación de ambos.
1
2
3
4
5
6
7
8
9
| var nombres = new Array("Juan", "Pedro", "Federico", "Martin", "Alejandro");
var algunos = nombres.filter(function(elemento, indice)
{
//Utilizamos el valor de cada elemento para filtrar
return elemento != "Pedro" && elemento != "Federico";
});
alert(algunos);
//Juan,Martin,Alejandro |
Ver ejemplo funcionando
1
2
3
4
5
6
7
8
9
| var nombres = new Array("Juan", "Pedro", "Federico", "Martin", "Alejandro");
var algunos = nombres.filter(function(elemento, indice)
{
//Utilizamos el indice
return indice > 2;
});
alert(algunos);
//Martin, Alejandro |
Ver ejemplo funcionando
map
1
2
3
4
5
6
| var nuevoArreglo = Arreglo.map(function(elemento, indice)
{
return elemento + "algo"; //operacion
},
bind
); |
map nos permite aplicar una operación a cada una de las posiciones de un arreglo, retornando un nuevo arreglo con los cambios realizados.
1
2
3
4
5
6
7
8
| var nombres = new Array("Juan", "Pedro", "Federico", "Martin", "Alejandro");
var procesados = nombres.map(function(elemento, indice)
{
return indice + "." + elemento;
});
alert(procesados);
//0.Juan, 1.Pedro, 2.Federico, ... |
Ver ejemplo funcionando
every
1
2
3
4
5
6
| var resultado = Arreglo.every(function(elemento, indice)
{
return elemento != "algo"; //condicion
},
bind
); |
every ejecuta la función pasada por parámetro mientras la condición se cumple. Si la condición se cumple para todos los elementos, every retorna true. Ahora, si existe un solo elemento que no cumple la condición, retorna false.
1
2
3
4
5
6
7
8
| var nombres = new Array("Juan", "Pedro", "Federico", "Martin", "Alejandro");
var resultado = nombres.every(function(elemento, indice)
{
return elemento != "Alejandro";
});
alert(resultado);
//false |
Ver ejemplo funcionando
1
2
3
4
5
6
7
8
| var nombres = new Array("Juan", "Pedro", "Federico", "Martin", "Alejandro");
var resultado = nombres.every(function(elemento, indice)
{
return elemento != "Florentino";
});
alert(resultado);
//true |
Ver ejemplo funcionando
some
1
2
3
4
5
6
| var resultado = Arreglo.some(function(elemento, indice)
{
return elemento != "algo"; //condicion
},
bind
); |
some es parecida a every. Recorre el arreglo hasta que encuentra un elemento que cumple la condición e inmediatamente devuelve true. Si no encuentra elementos que cumplan la condición, devuelve false.
1
2
3
4
5
6
7
8
| var nombres = new Array("Juan", "Pedro", "Federico", "Martin", "Alejandro");
var resultado = nombres.some(function(elemento, indice)
{
return elemento != "Alejandro";
});
alert(resultado);
//true |
Ver ejemplo funcionando
indexOf
1
| var resultado = Arreglo.indexOf(valor); |
indexOf nos permite buscar un elemento dentro de un arreglo, retornando su indice en caso de encontrarlo o -1 en caso contrario.
1
2
3
4
5
| var nombres = new Array("Juan", "Pedro", "Federico", "Martin", "Alejandro");
var resultado = nombres.indexOf("Pedro");
alert(resultado);
//1 |
Ver ejemplo funcionando
copy
1
| var copia = Arreglo.copy(); |
Cuando nosotros intentamos copiar un arreglo de la siguiente manera:
1
2
| var arreglo = new Arreglo("valor");
var nuevoArreglo = arreglo; |
Lo que obtenemos en nuevoArreglo no es una copia de arreglo sino una referencia, tanto nuevoArreglo como arreglo se refieren a los mismos elementos, por lo cual si modificamos nuevoArreglo también observaremos los mismos cambios en arreglo. Se puede observar en el siguiente ejemplo:
1
2
3
4
5
6
7
8
9
10
| var nombres = new Array("Juan", "Pedro", "Federico", "Martin", "Alejandro");
var nombres2 = nombres;
nombres2[0] = "Juancito";
alert("Nombres " + nombres);
//Juancito, Pedro, Federico, Martin, Alejandro
alert("Nombres 2 " + nombres2);
//Juancito, Pedro, Federico, Martin, Alejandro |
Ver ejemplo funcionando
Si lo que necesitamos es una copia en lugar de una referencia, utilizaremos copy.
1
2
3
4
5
6
7
8
9
10
| var nombres = new Array("Juan", "Pedro", "Federico", "Martin", "Alejandro");
var nombres2 = nombres.copy();
nombres2[0] = "Juancito";
alert("Nombres " + nombres);
//Juan, Pedro, Federico, Martin, Alejandro
alert("Nombres 2 " + nombres2);
//Juancito, Pedro, Federico, Martin, Alejandro |
Ver ejemplo funcionando
remove
1
| Arreglo = Arreglo.remove("valor"); |
Con remove borramos un elemento del arreglo.
1
2
3
4
5
6
7
| var nombres = new Array("Juan", "Pedro", "Federico", "Martin", "Alejandro");
alert(nombres);
//Juan, Pedro, Federico, Martin, Alejandro
var nombres = nombres.remove("Pedro");
alert(nombres);
//Juan, Federico, Martin, Alejandro |
Ver ejemplo funcionando
contains
1
| resultado = Arreglo.contains("valor", comienzo); |
Con contains podemos buscar un elemento dentro de un arreglo, devuelve true en caso de encontrarlo o false en caso contrario. Como parámetro opcional podemos indicar que comience a buscar desde una posición en particular, si no se especifica una posición, comenzará desde 0.
1
2
3
4
5
6
7
8
| var nombres = new Array("Juan", "Pedro", "Federico", "Martin", "Alejandro");
var resultado = nombres.contains("Pedro");
alert(resultado);
//true
resultado = nombres.contains("Pedro", 2);
alert(resultado);
//false |
Ver ejemplo funcionando
associate
1
| var arregloAsociativo = arregloValores.associate(arregloLlaves); |
Con associate podemos construir fácilmente un arreglo asociativo del tipo llave => valor a partir de dos arreglos. Se puede ver claramente en el siguiente ejemplo:
1
2
3
4
5
6
7
8
9
10
| var valores = new Array('valor 1', 'valor 2', 'valor 3', 'valor 4');
var llaves = new Array('llave1', 'llave2', 'llave3', 'llave4');
var arregloAsociativo = valores.associate(llaves);
alert(arregloAsociativo['llave1']);
//valor 1
alert(arregloAsociativo['llave2']);
//valor 2 |
Ver ejemplo funcionando
extend
1
| arreglo.extend(otroArreglo); |
extend nos permite extender un arreglo con otro.
1
2
3
4
5
| var nombres = new Array("Juan", "Pedro", "Federico", "Martin", "Alejandro");
nombres.extend(new Array("Martin", "Joaquin"));
alert(nombres);
//Juan, Pedro, Federico, Martin, Alejandro, Martin, Joaquin |
Ver ejemplo funcionando
merge
1
| arreglo.merge(otroArreglo); |
merge nos permite fusionar dos arreglos, es decir, unir dos arreglos en uno dejando fuera los elementos repetidos.
1
2
3
4
5
| var nombres = new Array("Juan", "Pedro", "Federico", "Martin", "Alejandro");
nombres.merge(new Array("Martin", "Joaquin"));
alert(nombres);
//Juan, Pedro, Federico, Martin, Alejandro, Joaquin |
Ver ejemplo funcionando
include
1
| arreglo.include('elemento'); |
Con include podemos agregar un elemento a nuestro arreglo siempre y cuando no sea un elemento ya existente en dicho arreglo.
1
2
3
4
| var nombres = new Array("Juan", "Pedro", "Federico", "Martin", "Alejandro");
nombres.include("Joaquin");
alert(nombres);
//Juan, Pedro, Federico, Martin, Alejandro, Joaquin |
Ver ejemplo funcionando
getRandom
Con getRandom obtenemos un elemento aleatorio de nuestro arreglo.
1
2
| var nombres = new Array("Juan", "Pedro", "Federico", "Martin", "Alejandro");
alert(nombres.getRandom()); |
Ver ejemplo funcionando
getLast
Con getLast obtenemos el ultimo elemento de nuestro arreglo.
1
2
3
| var nombres = new Array("Juan", "Pedro", "Federico", "Martin", "Alejandro");
alert(nombres.getLast());
//Alejandro |
Ver ejemplo funcionando
Popularity: 5% [?]
Otros artículos
August 3, 2007 a las 6:05 pm
Buenisima referencia. Cosas que son complejas en javascript o no sllevan tiempo haciendolas, en un par de lineas las podemos hacer con moo.
Felicidades y gracias por compartir ese conocimiento con nosotros eh….
September 12, 2007 a las 4:05 am
XD, grazzie, javascript aun no lo programo muy bien, hoy me sacaste de otra duda por cierto usas msn
September 12, 2007 a las 10:34 pm
No hay ni segundos libres para msn xd, solo uso gtalk para trabajar… gracias si chequeo el mail :p, el correo es mi nombre (federico) arroba el dominio(jourmoly.com.ar)
Saludos
January 18, 2009 a las 2:10 am
cambia la funcion .remove por .erase, linda page suerte