Arreglos con Mootools

7 de July, 2007

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

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

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

4 comentarios en “Arreglos con Mootools”

  1. Arcadio Dijo:

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

  2. ImZyos! Dijo:

    XD, grazzie, javascript aun no lo programo muy bien, hoy me sacaste de otra duda por cierto usas msn

  3. Federico Dijo:

    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

  4. P Dijo:

    cambia la funcion .remove por .erase, linda page suerte

Deja tu comentario

XHTML: Puedes usar estos tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

El blog funciona con Wordpress y Simpla theme