JavaScript 10 - Arrays
JavaScript 10 - Arrays
Ejercicios
ALBERT BASSONS 2
Concepto de array
• Imaginemos que queremos guardar en la memoria del
ordenador 7 mediciones del nivel del agua de un depósito en
un tiempo determinado.
ALBERT BASSONS 3
Concepto de array
ALBERT BASSONS 4
Concepto de array
15 3 18 25 4 2 6
var mediciones =
ALBERT BASSONS 5
Concepto de array
• Se puede acceder individualmente a cada una de las posiciones,
tanto para lectura como para escritura.
ALBERT BASSONS 6
Creando un array
• Existen tres maneras básicas de crear arrays en JavaScript.
ALBERT BASSONS 7
Ejemplo
ALBERT BASSONS 8
Posiciones en un array
• La manera de acceder a cada una de las posiciones del vector del
ejemplo anterior es la siguiente:
Primera posición
Séptima y última
posición
ALBERT BASSONS 9
Posiciones en un array
[0] [1] [2] [3] [4] [5] [6]
Var mediciones=
ALBERT BASSONS 10
Errores habituales
• Los errores más habituales en el acceso al array son:
• Pensar que la primera posición la [1].
• Pensar que la última posición es la [n] para un array
tamaño n.
15 3 18 25 4 2 6
?
mediciones[0] mediciones[7]
ALBERT BASSONS 11
Inicializando un array
• Si no inicializamos las posiciones de un vector en JS, éstas
contendrán undefined. A veces necesitamos vectores muy
grandes con sus posiciones inicializadas a un valor concreto:
ALBERT BASSONS 12
Array de textos
• Los arrays pueden ser colecciones de cualquier tipo de
ALBERT BASSONS 13
Arrays de objetos
• Podremos crear arrays de objetos. Por ejemplo una lista de
personas, de coches, de cartas…
ALBERT BASSONS 14
Arrays mixtos
• En JavaScript se permite que un Array contenga elementos
de diversos tipos. Esto se debe tratar con cuidado, puesto que
puede provocar errores en nuestras aplicaciones.
ALBERT BASSONS 15
Los arrays son objetos
http://www.w3schools.com/jsref/jsref_obj_array.asp
ALBERT BASSONS 16
Propiedades
• La propiedad length nos será muy útil para conocer el
tamaño de los vectores, por ejemplo para recorrerlos de
principio a fin.
Propiedad Descripción
length Establece o devuelve el número de elementos del array.
constructor Retorna la función que creó el prototipo del objeto.
prototype Permite añadir propiedades y métodos al objeto.
ALBERT BASSONS 17
Recorriendo un array
• Vamos a ver cómo recorrer un array desde la posición inicial a
la posición final mediante un bucle:
ALBERT BASSONS 18
Recorriendo un array
• En el ejemplo anterior:
mediciones[i]
i
[0] [1] [2] [3] [4] [5] [6]
Var mediciones=
ALBERT BASSONS 19
Ejemplo
• Recorrer un array numérico para encontrar la suma de sus
valores:
ALBERT BASSONS 20
El bucle for..in
• Existe un tipo de bucle en JS pensado para recorrer las
propiedades de los objetos: el bucle for…in, que también
podríamos usar para recorrer vectores.
ALBERT BASSONS 21
Ejemplo
• Este es un ejemplo que funciona:
ALBERT BASSONS 22
El bucle for each..in
• JavaScript también incorpora otra variante del for, el for
each…in.
ALBERT BASSONS 23
El método foreach()
• Más info:
https://msdn.microsoft.com/es-es/library/ff679980%28v=vs.94%29.aspx
ALBERT BASSONS 24
Ejemplo
ALBERT BASSONS 25
Métodos
Método Descripción
slice() Selecciona una parte del array y lo retorna.
sort() Ordena los elementos de un array.
splice() Añade o quita elementos de un array.
toString() Convierte el array a String.
unshift() Añade elementos al inicio del array y retorna
el nuevo tamaño.
valueOf() Retorna el valor primitivo de un array.
ALBERT BASSONS 26
Métodos
Método Descripción
concat() Une dos o más arrays
indexOf() Busca un elemento en el array y retorna su posición.
join() Junta los elementos de un array en un String
lastIndexOf() Busca la última aparición de un elemento en el array y
retorna la posición.
ALBERT BASSONS 27
Métodos
Método Descripción
pop() Quita el último elemento del array y lo retorna.
push() Añade un nuevo elemento al final del array y retorna
su tamaño
reverse() Invierte el orden de los elementos.
shift() Quita el primer elemento del array y retorna dicho
array.
ALBERT BASSONS 28
Ejemplo
ALBERT BASSONS 29
Pasar un array a una función
ALBERT BASSONS 30
Ejemplo (1 de 2)
• Función que invierte una lista:
• Prototipo de la función:
Array invertir(Array lista);
ALBERT BASSONS 31
Ejemplo (2 de 2)
ALBERT BASSONS 32
Otro ejemplo
• Función que nos da la lista de divisores de un número:
• Prototipo de la función:
Array<int> divisores(int numero);
ALBERT BASSONS 33
Colección de elementos HTML
• Como hemos dicho antes, se puede tener un array de
objetos.
ALBERT BASSONS 34
Colección de elementos HTML
ALBERT BASSONS 35
Colección de elementos HTML
• Prototipo de estos métodos:
HTMLCollection getElementsBy…(String);
ALBERT BASSONS 36
Colección de elementos HTML
ALBERT BASSONS 37
Arrays asociativos
• Observa el siguiente ejemplo, en el que estamos usando
un array para guardar los datos de una persona:
ALBERT BASSONS 38
Arrays asociativos
• En lugar de usar números como índice, podríamos usar
cadenas de texto.
ALBERT BASSONS 39
Arrays asociativos
ALBERT BASSONS 40
Matrices
• Se pueden crear arrays de dos dimensiones (matrices) o
incluso de más.
1 2
3 4
ALBERT BASSONS 41
Matrices
• Para acceder a cada una de las posiciones:
ALBERT BASSONS 42
Matrices
• Para recorrer una matriz de dos dimensiones podemos usar
un bucle dentro de otro bucle.
ALBERT BASSONS 43
Matrices
• Y podemos tener matrices donde una dimensión es numérica
y la otra asociativa:
ALBERT BASSONS 44
Ejemplo
ALBERT BASSONS 45
Ejercicios
Arrays
Ejercicios
1. Prueba al menos seis métodos de los que se mencionan en las
transparencias que hablan de los métodos disponibles para
trabajar con arrays (las tablas lila).
ALBERT BASSONS 47
Ejercicios
2. Crea las siguientes funciones:
ALBERT BASSONS 48
Ejercicios
ALBERT BASSONS 49
Ejercicios
4. Crea las siguientes funciones sin usar los métodos que ya existen
para trabajar con arrays:
a. indiceDe(): recibe un elemento y un vector y devuelve la posición del
elemento en el vector (-1 si no lo encuentra).
b. ultimoIndiceDe(): recibe un elemento y un vector y devuelve la
posición de la última aparición del elemento en el vector (-1 si no lo
encuentra).
c. concatenar(): recibe dos vectores y devuelve un nuevo vector con la
unión del primero y el segundo.
d. invertir(): recibe un vector e invierte sus posiciones. Retorna también
el vector invertido.
ALBERT BASSONS 50
Ejercicios
5. Crea una web que reciba un número que represente el DNI de
una persona y devuelva la letra que le corresponde. Realiza
varias pruebas con DNIs conocidos para comprobar que
funciona correctamente.
ALBERT BASSONS 51
Ejercicios
ALBERT BASSONS 52
Ejercicios extras
Arrays y matrices
Ejercicios
6. EJERCICIO EXTRA: ENCIENDE vamos a crear el juego
LAS LUCES.
ALBERT BASSONS 54
Ejercicios
PISTAS:
Haz una representación del tablero
como una matriz 5x5 con valores 0/1 o
true/false.
ALBERT BASSONS 55