Si les variables ens serveixen per a guardar un únic valor, les llistes s'utilitzen per guardar un nombre indefinit de dades. És a dir, podem tindre una llista de 3 elements o podem tindre una llista de 1000. Les llistes han de tindre els valors entre [] separats per comes i podran tindre diferents tipus de valors:
var llista_paraules = ['hola', 'adeu', 'programació', 'javascript'];
var llista_numeros = [1, 5, 3, 8, 10, 10];
var llista_buida = [];
var llista_diferents_tipus = ['hola', 3, false, 2.3];
D'una llista podem agafar qualsevol element a través de la seua posició, sempre tenint en compte que la primera posició és la 0. Si pel que siga, intentem agafar l'element d'una posició i la llista no té eixa posició, retornarà un valor undefined. Si volem agafar l'últim element sempre haurem de consultar el tamany de la llista amb llista.length i llevar-li 1, perquè?
Perquè una llista de 4 elements tindrà les posicions 0, 1, 2 i 3, per tant, per agafar el 3 és el tamany de la llista (4) menys 1.
var llista = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
var primer_element = llista[0]; //a
var tercer_element = llista[2]; //c
var ultim_element = llista[llista.length - 1]; //g
De la mateixa manera podem recórrer la llista amb un bucle agafant una variable que vaja des de 0 fins la longitud de la llista:
var llista = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
for(var i = 0; i < llista.length; i++) {
document.write(llista[i]);
}
Per afegir elements a una llista, tenim diferents opcions:
PUSH: Afegeix al final de la llista
var llista = ['a', 'b', 'c'];
llista.push('d'); // ['a', 'b', 'c', 'd']
llista.push('e', 'f'); // ['a', 'b', 'c', 'd', 'e', 'f']
var llista2 = [];
llista.push(1); // [1]
llista.push(2, 3, 4); // [1, 2, 3, 4]
UNSHIFT: Afegeix al principi de la llista
var llista = ['a', 'b', 'c'];
llista.unshift('d'); // ['d', 'a', 'b', 'c']
llista.unshift('e', 'f'); // ['e', 'f', 'd', 'a', 'b', 'c', 'd']
var llista2 = [];
llista.unshift(1); // [1]
llista.unshift(2, 3, 4); // [2, 3, 4, 1]
Per esborrar elements d'una llista també tenim diferents opcions:
POP: Lleva del final de la llista
var llista = ['a', 'b', 'c'];
llista.pop(); // ['a', 'b']
llista.pop(); // ['a']
var llista2 = [1];
llista.pop(); // []
SHIFT: Lleva del principi de la llista
var llista = ['a', 'b', 'c'];
llista.shift(); // ['b', 'c']
llista.shift(); // ['c']
var llista2 = [1, 2];
llista.shift(); // [2]
SPLICE: Lleva de la posició que volga'm i quants volga'm --> llista.splice(posició, quants)
var llista = ['a', 'b', 'c', 'd', 'e'];
llista.splice(1, 2); // De la posició 1 i esborra 2 --> ['a', 'd', 'e']
llista.splice(1); // De la posició 3 fins al final --> ['a']
var llista2 = [1, 2, 3, 4, 5, 6, 7, 8];
llista.splice(1, 1); // De la posició 1 i esborra 1 [1, 3, 4, 5, 6, 7, 8]
Les matrius són llistes de llistes, és a dir, en lloc de guardar diversos valors, guardem llistes amb valors. Les matrius es poden fer de les dimensions que vulga'm: 2, 3, 4, etc, però cada vegada es farà més complicat entendre-la i recórrer-la.
Si veiem la matriu de la dreta, té 3 files i 5 columnes.
Per definir aquesta matriu fariem el següent:
Definir una llista amb les files
Definir dins de cada fila una llista amb les columnes i els valors.
[ [], [], [] ]
Primera fila [50, 5, 27, 400, 7]
Segona fila [0, 67, 90, 6, 97]
Tercera fila [30, 14, 23, 251, 490]
Tota la matriu:
[ [50, 5, 27, 400, 7] , [0, 67, 90, 6, 97] , [30, 14, 23, 251, 490] ]
De la mateixa manera que agafavem un valor de la llista amb [] indicant la posició, ara amb el primer [] agafarem la fila i amb un altre [] la columna:
var matriu = [ [50, 5, 27, 400, 7] , [0, 67, 90, 6, 97] , [30, 14, 23, 251, 490] ]
var element = matriu[2][1]; //Fila 2, Col 1 --> 14
element = matriu[0][0]; //Fila 0, Col 0 --> 50
element = matriu[0][matriu[0].length - 1] //Fila 0 i últim element de la llista 0 --> 7
element = matriu[matriu.length - 1][0] // Última fila i primer element --> 30
De la mateixa manera, podrem afegir i esborrar elements com en les llistes:
var matriu = [ [50, 5, 27, 400, 7] , [0, 67, 90, 6, 97] , [30, 14, 23, 251, 490] ]
matriu[0].push(3); //Afegeix a la llista de la primera fila un 3
// [ [50, 5, 27, 400, 7, 3] , [0, 67, 90, 6, 97] , [30, 14, 23, 251, 490] ]
matriu.push([1, 2]); //Afegeix a la matriu una fila més amb dos columnes
// [ [50, 5, 27, 400, 7, 3] , [0, 67, 90, 6, 97] , [30, 14, 23, 251, 490], [1, 2] ]
Escriu un programa que tinga una funció que des del numero inicial i final que se li envie com a paràmetre, mostre tots els números que siguen parells. Després crida'l 2 vegades enviant de l'1 al 50 i l'altre del 50 al 100.
Amplia el programa de l'apartat Retornar un valor perquè l'usuari vaja escrivint textos i es vajen contant les a que conté fins que l'usuari indique un text que siga 'ACABAT'.
Agafa els 3 exericicis de l'anterior pàgina i divideix en funcions cada exercici. Després des del programa principal crida a les 3 funcions:
Llegir el que diu l'usuari
Mostrar totes les lletres
Contar les a, e, i o i u que té el text
Mostrar totes les lletres fins que trobe una a