4 |
5 | Arrays - Propiedades y métodos
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Clase 10/scripts.js:
--------------------------------------------------------------------------------
1 |
2 | let numbers = [1,2,3,4,5,1];
3 |
4 | /*
5 | Arrays - Propiedad
6 | .length - devuelve el número de posiciones que contiene el array
7 | */
8 |
9 | //console.log(numbers.length);
10 |
11 | /*
12 | Arrays - Métodos
13 | Array.isArray(variable a evaluar) - Devuelve true si la variable es un array.
14 | */
15 |
16 | //let number = 4;
17 | //console.log(Array.isArray(number));
18 | //console.log(Array.isArray(numbers));
19 |
20 | /*
21 | Eliminar un elemento
22 | .shift() - Elimina el primer elemento del array y devuelve ese elemento
23 | .pop() - Elimina el último elemento de un array y devuelve ese elemento
24 | */
25 |
26 | //console.log(numbers);
27 | //let deleteElement = numbers.shift();
28 | //console.log(numbers);
29 | //console.log(deleteElement);
30 | //console.log(numbers);
31 | //numbers.pop();
32 | //console.log(numbers);
33 |
34 | /*
35 | Añadir elementos
36 | .push(element1, element2,...) - Añade uno o más elementos al final del array y devuelve la nueva longitud.
37 |
38 | .unshift(element1, element2,...) - Añade uno o más elementos al comienzo del array y devuelve la nueva longitud.
39 | */
40 |
41 | //console.log(numbers);
42 | //let newLength = numbers.push(6);
43 | //console.log(numbers);
44 | //console.log(newLength);
45 | //let newLength2 = numbers.unshift(0);
46 | //console.log(numbers);
47 |
48 | /*
49 | .indexOf() - Devuelve el primer índice del elemento que coincida con el valor especificado, o -1 si ninguno es encontrado.
50 | */
51 |
52 | //console.log(numbers);
53 | //console.log(numbers.indexOf(1));
54 |
55 | /*
56 | .lastIndexOf() - Devuelve el último índice del elemento que coincida con el valor especificado, o -1 si ninguno es encontrado.
57 | */
58 |
59 | //console.log(numbers);
60 | //console.log(numbers.lastIndexOf(1));
61 |
62 | /*
63 | .reverse() - Invierte el orden de los elementos del array.
64 | */
65 |
66 | //console.log(numbers);
67 | //numbers.reverse();
68 | //console.log(numbers);
69 |
70 | /*
71 | .join('separador') - Devuelve un string con el separador que indiquemos, por defecto son comas
72 | */
73 |
74 | //console.log(numbers);
75 | //let arrayString = numbers.join(' ')
76 | //console.log(arrayString);
77 | //console.log(numbers.join('-'));
78 |
79 | /*
80 | .splice(a,b,items) - Cambia el contenido de un array eliminando elementos existentes y/o agregando nuevos elementos.
81 | a - Indice de inicio
82 | b - Número de elementos (opcional)
83 | items - Elementos a añadir en el caso de que se añadan. (opcional)
84 | */
85 |
86 | //console.log(numbers);
87 | //numbers.splice(3) - Elimina desde la posicion a hasta el final
88 | //numbers.splice(2,2) - Elimina desde la posicion a el número valores que le indiquemos
89 | //numbers.splice(2,2,10,23,54) - Si b es un valor distinto de 0 elimina el número de valores que indiquemos en b y añade los valores de items a partir de la posicion a
90 | //numbers.splice(4,0,10,23,54) - Si b vale 0 añade los elementos a partir de la posicion a y no elimina ninguno
91 | //console.log(numbers);
92 |
93 | /*
94 | .slice(a,b) - Extrae elementos de un array desde el índice a hasta el índice b. Si no existe b lo hace desde a hasta el final, si no existe ni a ni b hace una copia del original.
95 | */
96 |
97 | //let newNumbers = numbers.slice();
98 | //console.log(numbers);
99 | //console.log(newNumbers);
100 |
101 | //let newNumbers = numbers.slice(2);
102 | //console.log(numbers);
103 | //console.log(newNumbers);
104 |
105 | //let newNumbers = numbers.slice(2,4);
106 | //console.log(numbers);
107 | //console.log(newNumbers);
--------------------------------------------------------------------------------
/Clase 11/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Bucles I - Bucle while & do...while
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Clase 11/scripts.js:
--------------------------------------------------------------------------------
1 | /* Bucles */
2 |
3 | /*
4 | Indeterminados - No sabemos el número de veces que se va a ejecutar el código
5 |
6 | Bucle while
7 | while(condición){
8 | //código a ejecutar
9 | }
10 |
11 | Bucle do...while
12 | do{
13 | //código a ejecutar
14 | }while(condición)
15 | */
16 |
17 | let pass = 'hola';
18 |
19 | while(pass != 'hola'){
20 | pass = prompt('Introduzca su contraseña')
21 | }
22 |
23 | console.log('Fin del bucle');
24 |
25 | do{
26 | pass = prompt('Introduzca su contraseña')
27 |
28 | }while(pass != 'hola')
29 |
30 |
--------------------------------------------------------------------------------
/Clase 12/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Bucles II - Bucle for
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Clase 12/scripts.js:
--------------------------------------------------------------------------------
1 | /* Bucles */
2 |
3 | /*
4 | Determinados
5 |
6 | bucle for
7 |
8 | Su sintaxis se compone de 3 partes
9 | Iniciación de variable
10 | Número de vueltas
11 | Incremento o decremento
12 |
13 | for(let i=0;i<=10;i++){
14 | Código a ejecutar
15 | }
16 | */
17 |
18 | let numbers = [56,14,23,37,41,59]
19 |
20 | for(let i=0;i<=numbers.length;i++){
21 | console.log(`i vale ${i} y el valor de esa posición en el array es ${numbers[i]}`);
22 | }
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Clase 13/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Bucles III - Bucle for of y for in
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Clase 13/scripts.js:
--------------------------------------------------------------------------------
1 | /* Bucles */
2 |
3 | /*
4 | Determinados
5 |
6 | bucle for of / for in
7 |
8 | for(let variable of estructura){
9 | Código a ejecutar
10 | }
11 |
12 | Palabras reservadas de bucles
13 |
14 | break - Rompe el bucle
15 | continue - Se salta la(s) posicion(es) que le indequemos y después continúa su ejecución
16 | */
17 |
18 | let names = ['Paco', 'José', 'Paula', 'María']
19 |
20 | for (let i = 0; i < names.length; i++){
21 | if(names[i]==='Paula'){
22 | continue
23 | }
24 | console.log(names[i]);
25 | }
26 |
27 | for(let name of names){
28 | if(name==='Paula'){
29 | continue
30 | }
31 | console.log(name);
32 | }
33 |
34 | for(let index in names){
35 | if(names[index]==='Paula'){
36 | continue
37 | }
38 | console.log(index);
39 | }
--------------------------------------------------------------------------------
/Clase 14/ejercicios.md:
--------------------------------------------------------------------------------
1 | 1 - Solicita un nombre, la edad y muestra por consola el mensaje "Hola ____, tienes ____ años y el año que viene tendrás ____ años"
2 | Realiza el ejercicio con prompt(mensaje) y haz uso de los template strings
3 |
4 | 2 - Escribe un programa que pueda calcular el área de 3 figuras geométricas, triángulo, rectángulo y círculo. En primer lugar pregunta de qué figura se quiere calcular el área, después solicita los datos que necesites para calcularlo.
5 | triángulo = b * h/2
6 | rectángulo = b * h
7 | círculo = π * r2 (pi * radio al cuadrado)
8 |
9 | 3 - Solicita un número e imprime todos los números pares e impares desde 1 hasta ese número con el mensaje "es par" o "es impar"
10 | si el número es 5 el resultado será:
11 | 1 - es impar
12 | 2 - es par
13 | 3 - es impar
14 | 4 - es par
15 | 5 - es impar
16 |
17 | 4 - Escribe un programa que pida un número entero mayor que 1 y que escriba si el número primo o no.
18 | Un número primo es aquel que solo es divisible por sí mismo y la unidad
19 |
20 | 5 - Escriba un programa que pida un número entero mayor que cero y calcule su factorial.
21 | El factorial es el resultado de multiplicar ese número por sus anteriores hasta la unidad.
22 |
23 | !5 = 5*4*3*2*1 = 120
24 |
25 | 6 - Escribe un programa que permita ir introduciendo una serie indeterminadade números mientras su suma no supere 50. Cuando esto ocurra, se debe mostrar el total acumulado y el contador de cuantos números se han introducido
26 |
27 | 7 - Crea 3 arrays. El primero tendra 5 números y el segundo se llamará pares y el tercero impares, ambos estarán vacíos. Después multiplica cada uno de los números del primer array por un número aleatorio entre 1 y 10, si el resultado es par guarda ese número en el array de pares y si es impar en el array de impares. Muestra por consola:
28 | -la multiplicación que se produce junto con su resultado con el formato 2 x 3 = 6
29 | -el array de pares e impares
30 |
31 | 8 - Dado un array de letras, solicita un número de DNI y calcula que letra le corresponde. El número no puede ser negativo ni tener más de 8 dígitos. La posición de la letra es el resultado del módulo del número introducido entre 23
32 |
33 | const letras = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E', 'T'];
34 |
35 | 9 - Solicitar al usuario una palabra y mostrar por consola el número de consonantes, vocales y longitud de la palabra.
36 |
37 | 10 - Dado un array que contiene ["azul", "amarillo", "rojo", "verde", "rosa"] determinar si un color introducido por el usuario a través de un prompt se encuentra dentro del array o no.
--------------------------------------------------------------------------------
/Clase 14/scripts.js:
--------------------------------------------------------------------------------
1 | /* Para pedir un dato al usuario se puede usar prompt(mensaje) */
2 |
3 | prompt('Introduzca su nombre')
4 |
5 | /* Para imprimir un dato se puede usar console.log(dato) */
6 |
7 | console.log(dato);
8 |
9 |
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 1/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ejercicio 1
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 1/scripts.js:
--------------------------------------------------------------------------------
1 | /*
2 | 1 - Solicita un nombre, la edad y muestra por consola el mensaje "Hola ____, tienes ____ años y el año que viene tendrás ____ años"
3 | Realiza el ejercicio con prompt(mensaje) y haz uso de los template strings
4 | */
5 |
6 | let name = prompt('Introduce tu nombre')
7 | let age = parseInt(prompt('Introduce tu edad'))
8 |
9 | console.log(`Hola ${name} tienes ${age} años y el año que viene tendrás ${age+1} años`);
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 10/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ejercicio 10
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 10/scripts.js:
--------------------------------------------------------------------------------
1 | /*
2 | 10 - Dado un array que contiene ["azul", "amarillo", "rojo", "verde", "rosa"] determinar si un color introducido por el usuario a través de un prompt se encuentra dentro del array o no.
3 | */
4 |
5 | const colors = ["azul", "amarillo", "rojo", "verde", "rosa"]
6 |
7 | const color = prompt('Introduce un color').toLowerCase()
8 |
9 | if(colors.indexOf(color) !== -1){
10 | console.log('Tu color se encuentra en el array');
11 | }else{
12 | console.log('Tu color no está definido');
13 | }
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 2/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ejercicio 2
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 2/scripts.js:
--------------------------------------------------------------------------------
1 | /*
2 | 2 - Escribe un programa que pueda calcular el área de 3 figuras geométricas, triángulo, rectángulo y círculo. En primer lugar pregunta de qué figura se quiere calcular el área, después solicita los datos que necesites para calcularlo.
3 | triángulo = b * h/2
4 | rectángulo = b * h
5 | círculo = π * r2 (pi * radio al cuadrado)
6 | */
7 |
8 | let figure = prompt('Introduce la figura geómetrica de la que quieres calcular el área: triangle, rectangle or circle')
9 |
10 | let base;
11 | let height;
12 | let radius;
13 |
14 | switch(figure){
15 | case 'triangle':
16 | base=prompt('Introduce la base del triángulo')
17 | height=prompt('Introduce la altura del triángulo')
18 | console.log(`El área del triángulo es ${(base*height)/2}`);
19 | break
20 | case 'rectangle':
21 | base=prompt('Introduce la base del rectángulo')
22 | height=prompt('Introduce la altura del rectángulo')
23 | console.log(`El área del rectángulo es ${base*height}`);
24 | break
25 | case 'circle':
26 | radius=prompt('Introduce el radio del círculo')
27 | console.log(`El área del círculo es ${Math.PI * Math.pow(radius,2)}`);
28 | break
29 | default: console.log('La figura geométrica no es válida');
30 | }
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 3/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ejercicio 3
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 3/scripts.js:
--------------------------------------------------------------------------------
1 | /*
2 | 3 - Solicita un número e imprime todos los números pares e impares desde 1 hasta ese número con el mensaje "es par" o "es impar"
3 | si el número es 5 el resultado será:
4 | 1 - es impar
5 | 2 - es par
6 | 3 - es impar
7 | 4 - es par
8 | 5 - es impar
9 | */
10 |
11 | let num = parseInt(prompt('Introduce un número'))
12 |
13 | for(let i=1; i<=num; i++){
14 | if(i%2==0){
15 | console.log(`${i} - es par`);
16 | }else{
17 | console.log(`${i} - es impar`);
18 | }
19 | }
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 4/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ejercicio 4
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 4/scripts.js:
--------------------------------------------------------------------------------
1 | /*
2 | 4 - Escribe un programa que pida un número entero mayor que 1 y que escriba si el número primo o no.
3 | Un número primo es aquel que solo es divisible por sí mismo y la unidad
4 | */
5 |
6 | let num = parseInt(prompt('Introduce un número'))
7 | let divisores = 0
8 |
9 | if (num === 1) console.log('El número no es válido')
10 | else {
11 |
12 | for (let i = 2; i < num; i++) {
13 | if (num % i == 0) {
14 | console.log(`${num} / ${i} = ${num / i} No es primo`)
15 | divisores++
16 | break
17 | }
18 | }
19 | }
20 |
21 | if(divisores==0) console.log(`${num} es primo`);
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 5/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ejercicio 5
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 5/scripts.js:
--------------------------------------------------------------------------------
1 | /*
2 | 5 - Escriba un programa que pida un número entero mayor que cero y calcule su factorial.
3 | El factorial es el resultado de multiplicar ese número por sus anteriores hasta la unidad.
4 |
5 | !5 = 5*4*3*2*1 = 120
6 | */
7 |
8 | let num = parseInt(prompt('Introduce un número'))
9 | let result=1
10 |
11 | for(let i = num; i>1; i--){
12 | result *= i
13 | }
14 |
15 | console.log(`El factorial de ${num} es ${result}`)
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 6/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ejercicio 6
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 6/scripts.js:
--------------------------------------------------------------------------------
1 | /*
2 | 6 - Escribe un programa que permita ir introduciendo una serie indeterminada de números mientras su suma no supere 50. Cuando esto ocurra, se debe mostrar el total acumulado y el contador de cuantos números se han introducido
3 | */
4 |
5 | let suma=0
6 | let cont=0
7 |
8 | while(suma<=50){
9 | suma += parseInt(prompt('Introduce un número para añadir a la suma'))
10 | cont++
11 | }
12 |
13 | console.log(`La suma total es de: ${suma}`);
14 | console.log(`El total de números introducidos es: ${cont}`);
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 7/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ejercicio 7
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 7/scripts.js:
--------------------------------------------------------------------------------
1 | /*
2 | 7 - Crea 3 arrays. El primero tendrá 5 números y el segundo se llamará pares y el tercero impares, ambos estarán vacíos. Después multiplica cada uno de los números del primer array por un número aleatorio entre 1 y 10, si el resultado es par guarda ese número en el array de pares y si es impar en el array de impares. Muestra por consola:
3 | -la multiplicación que se produce junto con su resultado con el formato 2 x 3 = 6
4 | -el array de pares e impares
5 | */
6 |
7 | const numbers = [3,43,21,20,56]
8 | let pares = []
9 | let impares = []
10 |
11 | for(const number of numbers){
12 | let random = Math.round(Math.random() * 10 + 1)
13 | const result = number * random
14 |
15 | console.log(`${number} x ${random} = ${result}`);
16 | if(result % 2 == 0){
17 | pares.push(result)
18 | }else{
19 | impares.push(result)
20 | }
21 | }
22 |
23 | console.log(pares);
24 | console.log(impares);
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 8/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ejercicio 8
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 8/scripts.js:
--------------------------------------------------------------------------------
1 | /*
2 | 8 - Dado un array de letras, solicita un número de DNI y calcula que letra le corresponde. El número no puede ser negativo ni tener más de 8 dígitos. La posición de la letra es el resultado del módulo del número introducido entre 23
3 | */
4 |
5 | const letras = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E', 'T']
6 |
7 | const dni = prompt('Introduce tu DNI')
8 |
9 | if(dni.length==8 && parseInt(dni)>0){
10 | let letra = dni%23
11 | console.log(`Tu DNI completo es ${dni}${letras[letra]}`);
12 | }
13 |
14 |
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 9/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ejercicio 9
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Clase 15-16/Ejercicio 9/scripts.js:
--------------------------------------------------------------------------------
1 | /*
2 | 9 - Solicitar al usuario una palabra y mostrar por consola el número de consonantes, vocales y longitud de la palabra.
3 | */
4 |
5 | const palabra = prompt('Introduce una palabra').toLowerCase()
6 |
7 | let consonantes=0
8 | let vocales = 0
9 |
10 | for(const letra of palabra){
11 | if(letra == 'a' || letra == 'e' || letra == 'i' || letra == 'o' || letra == 'u') vocales++
12 | else consonantes++
13 | }
14 |
15 | console.log(`Tu palabra tiene ${vocales} vocales, ${consonantes} consonantes y tiene un total de ${palabra.length} letras.`);
--------------------------------------------------------------------------------
/Clase 15-16/ejercicios.md:
--------------------------------------------------------------------------------
1 | 1 - Solicita un nombre, la edad y muestra por consola el mensaje "Hola ____, tienes ____ años y el año que viene tendrás ____ años"
2 | Realiza el ejercicio con prompt(mensaje) y haz uso de los template strings
3 |
4 | 2 - Escribe un programa que pueda calcular el área de 3 figuras geométricas, triángulo, rectángulo y círculo. En primer lugar pregunta de qué figura se quiere calcular el área, después solicita los datos que necesites para calcularlo.
5 | triángulo = b * h/2
6 | rectángulo = b * h
7 | círculo = π * r2 (pi * radio al cuadrado)
8 |
9 | 3 - Solicita un número e imprime todos los números pares e impares desde 1 hasta ese número con el mensaje "es par" o "es impar"
10 | si el número es 5 el resultado será:
11 | 1 - es impar
12 | 2 - es par
13 | 3 - es impar
14 | 4 - es par
15 | 5 - es impar
16 |
17 | 4 - Escribe un programa que pida un número entero mayor que 1 y que escriba si el número primo o no.
18 | Un número primo es aquel que solo es divisible por sí mismo y la unidad
19 |
20 | 5 - Escriba un programa que pida un número entero mayor que cero y calcule su factorial.
21 | El factorial es el resultado de multiplicar ese número por sus anteriores hasta la unidad.
22 |
23 | !5 = 5*4*3*2*1 = 120
24 |
25 | 6 - Escribe un programa que permita ir introduciendo una serie indeterminadade números mientras su suma no supere 50. Cuando esto ocurra, se debe mostrar el total acumulado y el contador de cuantos números se han introducido
26 |
27 | 7 - Crea 3 arrays. El primero tendra 5 números y el segundo se llamará pares y el tercero impares, ambos estarán vacíos. Después multiplica cada uno de los números del primer array por un número aleatorio entre 1 y 10, si el resultado es par guarda ese número en el array de pares y si es impar en el array de impares. Muestra por consola:
28 | -la multiplicación que se produce junto con su resultado con el formato 2 x 3 = 6
29 | -el array de pares e impares
30 |
31 | 8 - Dado un array de letras, solicita un número de DNI y calcula que letra le corresponde. El número no puede ser negativo ni tener más de 8 dígitos. La posición de la letra es el resultado del módulo del número introducido entre 23
32 |
33 | const letras = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E', 'T'];
34 |
35 | 9 - Solicitar al usuario una palabra y mostrar por consola el número de consonantes, vocales y longitud de la palabra.
36 |
37 | 10 - Dado un array que contiene ["azul", "amarillo", "rojo", "verde", "rosa"] determinar si un color introducido por el usuario a través de un prompt se encuentra dentro del array o no.
--------------------------------------------------------------------------------
/Clase 15-16/scripts.js:
--------------------------------------------------------------------------------
1 | /* Para pedir un dato al usuario se puede usar prompt(mensaje) */
2 |
3 | prompt('Introduzca su nombre')
4 |
5 | /* Para imprimir un dato se puede usar console.log(dato) */
6 |
7 | console.log(dato);
8 |
9 |
--------------------------------------------------------------------------------
/Clase 17/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Objetos - Introducción
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Clase 17/scripts.js:
--------------------------------------------------------------------------------
1 | const person = {
2 | name: 'Juan',
3 | age: 26,
4 | sons: ['Laura', 'Diego', 'Pepe', 'Rosa', 'Tomás']
5 | }
6 |
7 | /* console.log(person.name);
8 | console.log(person['name']); */
9 |
10 | /* for(const key in person){
11 | console.log(key);
12 | }
13 |
14 | for(const key in person){
15 | console.log(person[key]);
16 | } */
17 |
18 | /* for(const son of person.sons){
19 | console.log(son);
20 | } */
21 |
22 | console.log(`Hola ${person.name}. Tienes ${person.age} años y tus hijos se llaman ${person.sons.join(', ')}`);
--------------------------------------------------------------------------------
/Clase 18/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Funciones - Introducción
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Clase 18/scripts.js:
--------------------------------------------------------------------------------
1 | /* function saludar(){
2 | console.log("Hola");
3 | } */
4 |
5 | /* const saludar = () => console.log("Hola");
6 | const saludarUsuario = (user) => console.log(`Hola ${user}`);
7 |
8 | saludarUsuario('Pepe')
9 | saludarUsuario('Marta') */
10 |
11 | /* const suma = (num1, num2) => {
12 | if(num1 == 2){
13 | return num1+num2
14 | }
15 | console.log("Esto no se va a ejecutar si entra en el if");
16 | return num1
17 | }
18 | console.log(suma(7,3)); */
19 |
20 | const suma = (num1, num2) => num1+num2
21 |
22 | let result = suma(3,6)
23 |
24 | console.log(result);
--------------------------------------------------------------------------------
/Clase 19/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Programación Orientada a Objetos - POO
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Clase 19/scripts.js:
--------------------------------------------------------------------------------
1 | class Persona{
2 | constructor(nombre, apellido, edad){
3 | this.nombre = nombre
4 | this.apellido = apellido
5 | this.edad = edad
6 |
7 | this.datos = `Me llamo ${nombre} ${apellido} y tengo ${edad} años`
8 | }
9 |
10 | saludar(){
11 | return `Hola, me llamo ${this.nombre} y tengo ${this.edad} años.`
12 | }
13 | }
14 |
15 | const juan = new Persona('Juan', 'García', 25)
16 | const marta = new Persona('Marta', 'García', 35)
17 |
18 | console.log(juan);
19 |
20 | console.log(juan.saludar());
21 | console.log(marta.saludar());
--------------------------------------------------------------------------------
/Clase 20/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Ejercicio repaso clases y objetos
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/Clase 20/scripts.js:
--------------------------------------------------------------------------------
1 | /*
2 | Crea una clase Libro
3 | La clase libro tendrá título, autor, año y género.
4 | Crea un método que devuelva toda la información del libro
5 | Pide 3 libros y guárdalos en un array
6 | Los libros se introducirán al arrancar el programa pidiendo los datos con prompt.
7 | Validar que los campos no se introduzcan vacíos
8 | Validar que el año sea un número y que tenga 4 dígitos
9 | Validar que el género sea: aventuras, terror o fantasía
10 | Crea una función que muestre todos los libros
11 | Crea una función que muestre los autores ordenados alfabéticamente
12 | Crea una función que pida un género y muestre la información de los libros que pertenezcan a ese género usando un el método que devuelve la información
13 | */
14 |
15 | class Book {
16 | constructor(title, author, year, gender) {
17 | this.title = title
18 | this.author = author
19 | this.year = year
20 | this.gender = gender
21 | }
22 |
23 | getAuthor() {
24 | return this.author
25 | }
26 |
27 | getGender() {
28 | return this.gender
29 | }
30 |
31 | bookInfo() {
32 | return `${this.title} es un libro de ${this.gender} escrito por ${this.author} en el año ${this.year}`
33 | }
34 | }
35 |
36 | let books = []
37 |
38 | while (books.length < 3) {
39 | let title = prompt('Introduce el título del libro')
40 | let author = prompt('Introduce el autor del libro')
41 | let year = prompt('Introduce el año del libro')
42 | let gender = prompt('Introduce el género del libro').toLowerCase()
43 |
44 | if (title != '' &&
45 | author != '' &&
46 | !isNaN(year) &&
47 | year.length == 4 &&
48 | (gender == 'aventura' || gender == 'terror' || gender == 'fantasía')) {
49 |
50 | books.push(new Book(title, author, year, gender))
51 |
52 | }
53 | }
54 |
55 | const showAllBooks = () => {
56 | console.log(books);
57 | }
58 |
59 | const showAuthors = () => {
60 | let authors = []
61 |
62 | for (const book of books) {
63 | authors.push(book.getAuthor());
64 | }
65 |
66 | console.log(authors.sort());
67 | }
68 |
69 | const showGender = () => {
70 | const gender = prompt('Introduce el género a buscar')
71 |
72 | for (const book of books) {
73 | if (book.getGender() == gender) {
74 | console.log(book.bookInfo())
75 | }
76 | }
77 |
78 | }
79 |
80 | //showAllBooks()
81 | //showAuthors()
82 | showGender()
83 |
84 |
85 |
--------------------------------------------------------------------------------
/Clase 21/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Arrays III - Métodos II
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Clase 21/scripts.js:
--------------------------------------------------------------------------------
1 | /*
2 | Arrays - Métodos II
3 |
4 | .from(iterable) - Convierte en array el elemento iterable
5 |
6 | .sort([callback]) - Ordena los elementos de un array alfabéticamente(valor Unicode), si le pasamos un callback los ordena en función del algoritmo que le pasemos.
7 |
8 | .forEach(callback(currentValue, [index])) - ejecuta la función indicada una vez por cada elemento del array.
9 |
10 | .some(callback) - Comprueba si al menos un elemento del array cumple la condición
11 |
12 | .every(callback) - Comprueba si todos los elementos del array cumplen la condición
13 |
14 | .map(callback) - Transforma todos los elementos del array y devuelve un nuevo array
15 |
16 | .filter(callback) - Filtra todos los elementos del array que cumplan la condición y devuelve un nuevo array
17 |
18 | .reduce(callback) - Reduce todos los elementos del array a un único valor
19 | */
20 |
21 | /* FROM */
22 | /* let word = 'Hola mundo'
23 |
24 | console.log(Array.from(word));
25 | console.log(word.split('')); */
26 |
27 |
28 | /* SORT */
29 | /* const letters = ['b', 'c', 'z', 'a']
30 | const numbers = [1,8,100,300,3]
31 |
32 | console.log(letters.sort())
33 | console.log(numbers.sort())
34 |
35 | console.log(numbers.sort((a,b)=>a-b))
36 |
37 | function menorMayor(a, b) {
38 | if (a-b < 0) return -1;
39 | if (a-b > 0) return 1;
40 | if(a == b) return 0;
41 | }
42 |
43 | function mayorMenor(a, b) {
44 | if (b-a < 0) return -1;
45 | if (b-a > 0) return 1;
46 | if(b == a) return 0;
47 | } */
48 |
49 | /* FOREACH */
50 | /* const numbers = [12, 25, 47, 84, 98]
51 |
52 | //numbers.forEach((number)=>console.log(number))
53 | numbers.forEach((number, index) =>
54 | console.log(`${number} está en la posición ${index}`)) */
55 |
56 | /* const words = ['HTML', 'CSS', 'JavaScript', 'PHP']
57 |
58 | console.log(words.some(word => word.length>10));
59 | console.log(words.every(word => word.length>3)); */
60 |
61 | /* MAP */
62 | /* const numbers = [1, 2, 3, 4, 5] */
63 |
64 | /* const numbers2 = numbers.map(number => number * 2)
65 |
66 | console.log(numbers2); */
67 |
68 | /* REDUCE */
69 |
70 | /* const numbers2 = numbers.filter(number => number > 80)
71 |
72 | console.log(numbers2)
73 |
74 | console.log(numbers.reduce((a,b)=>a+b))
75 |
76 | const users = [
77 | {
78 | name: 'user 1',
79 | online: true
80 | },
81 | {
82 | name: 'user 2',
83 | online: true
84 | },
85 | {
86 | name: 'user 3',
87 | online: false
88 | },
89 | {
90 | name: 'user 4',
91 | online: false
92 | },
93 | {
94 | name: 'user 5',
95 | online: false
96 | },
97 | {
98 | name: 'user 6',
99 | online: true
100 | }
101 | ]
102 |
103 | const usersOnline = users.reduce((cont, user) => {
104 | if (user.online) cont++
105 | return cont
106 | },0)
107 |
108 | console.log(`Hay ${usersOnline} usuarios conectados`); */
109 |
--------------------------------------------------------------------------------
/Clase 22/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Spread operator
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/Clase 22/scripts.js:
--------------------------------------------------------------------------------
1 | /*
2 | Spread Operator (operador de expansión)
3 |
4 | Su sintaxis es ...
5 |
6 | */
7 |
8 | /* console.log(...numbers) */
9 |
10 | //Enviar elementos en un array a una función
11 |
12 | /* const addNumbers = (a, b, c) => {
13 | console.log(a+b+c)
14 | }
15 |
16 | let numbersToAdd = [1,2,3]
17 |
18 | addNumbers(...numbersToAdd) */
19 |
20 | //Añadir un array a otro array
21 | /* let users = ['javier', 'david', 'rosa', 'juan', 'mercedes']
22 |
23 | let newUsers = ['marta', 'jaime', 'laura']
24 |
25 | users.push(...newUsers)
26 |
27 | console.log(users); */
28 |
29 | //Copiar arrays
30 | /* let arr1 = [1, 2, 3, 4,5]
31 | let arr2 = [...arr1]
32 | console.log(arr2); */
33 |
34 | //Concatenar arrays
35 | /* let arr1 = [1, 2, 3, 4, 5]
36 | let arr2 = [6, 7, 8]
37 |
38 | let arrConcat = [...arr1, ...arr2]
39 | console.log(arrConcat) */
40 |
41 | // Enviar un número indefinido de argumentos a una función (parámetros REST)
42 |
43 | /* const restParms = (...numbers) => {
44 | console.log(numbers)
45 | }
46 |
47 | restParms(1,2,3,4,5,6,7,8) */
48 |
49 | //librería math
50 | const numbers = [-12, 2, 3, 23, 43, 2, 3]
51 |
52 | console.log(Math.max(...numbers))
53 | console.log(Math.min(...numbers))
54 |
55 | //Eliminar elementos duplicados
56 | console.log([...new Set(numbers)])
--------------------------------------------------------------------------------
/Clase 23/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | DOM
6 |
7 |
8 |
Lorem ipsum dolor sit amet consectetur, adipisicing elit.
12 |
13 |
Lorem ipsum dolor sit amet consectetur, adipisicing elit.Aliquam et iure blanditiis doloribus iste quasi adipisci, mollitia ad! Quod vero neque nisi recusandae perferendis
14 |
15 |
Lorem ipsum dolor sit amet consectetur, adipisicing elit.Aliquam et iure blanditiis doloribus iste quasi adipisci, mollitia ad!
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/Clase 24/scripts.js:
--------------------------------------------------------------------------------
1 | /*
2 | document.getElementById('id') - Acceder a un elemento a través de su id
3 |
4 | document | element .querySelector('selectorCSS') - Accede al primer elemento que coincida con el selector CSS
5 |
6 | document | element .querySelectorAll('selectorCSS') - Accede a todos los elementos que coincidan con el selector CSS, devuelve un nodeList
7 | */
8 |
9 | /* const title = document.getElementById('title')
10 |
11 | title.textContent = 'DOM - Accediendo a nodos' */
12 |
13 | /* const paragraph = document.querySelector('.paragraph')
14 |
15 | const span = document.getElementById('title').querySelector("span") */
16 |
17 | const paragraphs = document.querySelectorAll('.paragraph')
18 |
19 | //const paragraphsSpread = [...document.querySelectorAll('.paragraph')]
20 |
21 | const paragraphsArray = Array.from(document.querySelectorAll('.paragraph'))
22 |
23 | paragraphs[0].style.color = 'red'
24 |
25 | //paragraphs.map(p => p.style.color = 'green')
26 |
27 | //paragraphsSpread.map(p => p.style.color = 'green')
28 |
29 | paragraphsArray.map(p=>p.style.color='blue')
--------------------------------------------------------------------------------
/Clase 25/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Atributos desde JavaScript
6 |
7 |
8 |
9 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/Clase 28/scripts.js:
--------------------------------------------------------------------------------
1 | //DOM - Crear e insertar elementos
2 |
3 | /*
4 | Crear un elemento: document.createElement(element)
5 | Escribir texto en un elemento: element.textContent = texto
6 | Escribir HTML en un elemento: element.innerHTML = código HTML
7 |
8 | Añadir un elemento al DOM: parent.appendChild(element)
9 |
10 | Fragmentos de código: document.createDocumentFragment()
11 | */
12 |
13 | const days = ['Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado', 'Domingo']
14 |
15 | const title = document.getElementById('title')
16 | const daysList = document.getElementById('daysList')
17 | const selectDays = document.getElementById('daysSelect')
18 |
19 | /* const itemList = document.createElement('LI')
20 | itemList.textContent = 'Lunes'
21 |
22 | daysList.appendChild(itemList) */
23 |
24 | title.innerHTML = 'DOM - Crear e insertar elementos I'
25 |
26 | const fragment = document.createDocumentFragment()
27 |
28 | /* for (const day of days) {
29 | const itemList = document.createElement('LI')
30 | itemList.textContent = day
31 | fragment.appendChild(itemList)
32 | } */
33 |
34 | for (const day of days) {
35 | const selectItem = document.createElement('OPTION')
36 | selectItem.setAttribute('value', day.toLowerCase())
37 | selectItem.textContent = day
38 | fragment.appendChild(selectItem)
39 | }
40 |
41 | /* daysList.appendChild(fragment) */
42 | selectDays.appendChild(fragment)
43 |
--------------------------------------------------------------------------------
/Clase 29/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | DOM - Recorrerlo (DOM traversing)
6 |
7 |
8 |
DOM - Recorrerlo (DOM Traversing)
9 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/Clase 29/scripts.js:
--------------------------------------------------------------------------------
1 | //Recorrer el DOM (DOM Traversing)
2 |
3 | /*
4 | Padre - parent (Nodo del que desciende)
5 | - parentNode - Devuelve el nodo padre (que puede no ser un elemento)
6 | - parentElement - Devuelve el nodo elemento padre
7 |
8 | NOTA
9 | Los nodos del tipo Document y DocumentFragment nunca van a tener un elemento padre, parentNode y parentElement devolverá siempre null.
10 |
11 | Hijos - child (Nodo que desciende de un padre)
12 | - childNodes - Devuelve todos los nodos hijos
13 | - children - Devuelve todos los nodos elementos hijos
14 | - firstChild - Devueleve el primer nodo hijo
15 | - firstElementChild - Devueleve el primer nodo elemento hijo
16 | - lastChild - Devueleve el último nodo hijo
17 | - lastElementChild - Devueleve el último nodo elemento hijo
18 | - hasChildNodes() - Devueleve true si el nodo tiene hijos y false si no tiene
19 |
20 | Hermanos - siblings (Nodo al mismo nivel)
21 | - nextSibling - Devuelve el siguiente nodo hermano
22 | - nextElementSibling - Devuelve el siguiente nodo elemento hermano
23 | - previousSibling - Devuelve el anterior nodo hermano
24 | - previousElementSibling - Devuelve el anterior nodo elemento hermano
25 |
26 | Cercano
27 | - closest(selector) - Selecciona el nodo más cercano que cumpla con el selector, aún es experimental.
28 | */
29 |
30 | const parent = document.getElementById('parent')
31 |
32 | //console.log(parent.parentElement)
33 |
34 | //console.log(parent.childNodes)
35 | //console.log(parent.children)
36 | //console.log(parent.firstChild)
37 | //console.log(parent.firstElementChild)
38 | //console.log(parent.lastChild)
39 | //console.log(parent.lastElementChild)
40 | //console.log(parent.firstChild.hasChildNodes())
41 |
42 | //console.log(parent.nextSibling)
43 | //console.log(parent.parentElement.nextElementSibling)
44 | //console.log(parent.parentElement.previousSibling)
45 | //console.log(parent.parentElement.previousElementSibling)
--------------------------------------------------------------------------------
/Clase 30/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Insertar y eliminar elementos II
6 |
7 |
8 |
Insertar y eliminar elementos II
9 |
10 |
11 |
Reference son 1
12 |
Reference son 2
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Clase 30/scripts.js:
--------------------------------------------------------------------------------
1 | /*
2 | Insertar y eliminar elementos II
3 |
4 | parent.insertBefore(newElement, referenceElement) - Insertar un elemento antes del elemento de referencia
5 |
6 | SOPORTE TOTAL
7 | parent.insertAdjacentElement(position, element)
8 |
9 | parent.insertAdjacentHTML(position, HTML)
10 | parent.insertAdjacentText(position, text)
11 |
12 | positions:
13 | beforebegin - Antes de que empiece (hermano anterior)
14 | afterbegin - después de que empiece (primer hijo)
15 | beforeend - antes de que acabe (último hijo)
16 | afterend - después de que acabe (hermano siguiente)
17 |
18 | parent.replaceChild(newChild, oldChild) - Reemplaza un hijo por otro
19 | */
20 | const list = document.getElementById('list')
21 | const newElement = document.createElement('li')
22 | newElement.textContent = "I'm a new element"
23 |
24 | // list.insertBefore(newElement, list.children[1])
25 |
26 | //list.children[0].insertAdjacentElement('beforebegin',newElement)
27 | // list.insertAdjacentElement('afterbegin',newElement)
28 | // list.insertAdjacentElement('beforeend',newElement)
29 | //list.children[1].insertAdjacentElement('afterend',newElement)
30 |
31 | // list.children[1].insertAdjacentHTML('afterend', '
11 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Ipsa tempore provident vero facilis soluta dolore in nobis numquam, a nesciunt est, itaque deleniti minima maxime assumenda exercitationem perferendis amet quo.
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Clase 44-45-46-47/scripts.js:
--------------------------------------------------------------------------------
1 | /*
2 | Expresiones regulares:
3 | Son una secuencia de caracteres que forma un patrón de búsqueda, principalmente utilizada para la búsqueda de patrones de cadenas de caracteres u operaciones de sustituciones.
4 | https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Regular_Expressions
5 |
6 | Página para evaluar expresiones regulares: https://regex101.com/
7 |
8 | sintaxis:
9 | /patron/
10 | Banderas:
11 | i: ignore case. No diferencia entre mayusculas y minúsculas
12 | g: global. Busca de forma global, es decir, no se para después de la primera coincidencia
13 |
14 | Comodines:
15 | -Sustitución: Define un comodín dentro del patron. El símbolo es el "."
16 |
17 | -Listado de caracteres válidos: Entre corchetes se pone una lista de los caracteres válidos.
18 | [aeiou] Con esto cogeríamos todas las vocales
19 |
20 | -Rangos: Entre corchetes si ponemos un guión entre dos caracteres establecemos un rango. [a-z] Todas las letras minúsculas.
21 | Tabla ASCII https://ascii.cl/es/
22 |
23 | -Mezcla entre rangos y listas:
24 | Podemos unir los dos anteriores en una sola expresión. [0-5ou] Serían números del 0 al 5, la letra "o" y la letra "u"
25 |
26 | -Cadenas completas:
27 | Para establecer una cadena completa debe ir entre paréntesis, si queremos más palabras irán separadas por un pipe. (lorem|amet) es válida la palabra "lorem" y la palabra "amet"
28 |
29 | Delimitadores:
30 | ^ Antes de este símbolo no puede haber nada
31 | $ Después de este símbolo no puede haber nada
32 | ^hola$
33 | Cantidad:
34 | - llaves: lo que está antes tiene que aparecer la cantidad exacta de veces. Hay tres combinaciones posibles.
35 | {n} Se tiene que repetir n veces
36 | {n,m} Se tiene que repetir entre n y m veces, ambas incluidas.
37 | {n,} Se tiene que repetir como mínimo n veces y sin máximo
38 | ^[a-zA-Z]{1,3}@{1}$
39 | -asterisco: Lo que está antes del asterisco puede estar, puede no estar y se puede repetir. .*@.*\..*
40 | -interrogación: Lo que está antes de la interrogación puede no estar, pero si está solo puede aparecer una vez.
41 | ^[ae]?$
42 | - operador +: lo que está antes del + tiene que estár una vez como mínimo
43 | A-[0-9]+
44 |
45 | Caracteres:
46 | \s: Coincide con un carácter de espacio, entre ellos incluidos espacio, tab, salto de página, salto de linea y retorno de carro. ^[a-zA-Z]+\s[a-zA-Z]+$
47 | \S: Coincide con todo menos caracteres de espacio ^\S{5}$
48 | \d: Coincide con un carácter de número. Equivalente a [0-9] ^\d{5}$
49 | \D: Coincide con cualquier carácter no numérico. Equivalente a [^0-9] ^\D{5}$
50 | \w: Coincide con cualquier carácter alfanumérico, incluyendo el guión bajo. Equivalente a [A-Za-z0-9_] ^\w+@$
51 | \W: Coincide con todo menos caracteres de palabra. ^\W+$
52 |
53 |
54 | */
55 |
56 | const text = document.getElementById('text').textContent
57 | const regEx = /lorem/gi
58 | const regEx2 = new RegExp('lorem', 'gi')
59 | const regEx3 = new RegExp('/lorem/', 'gi')
60 |
61 | console.log(regEx.test(text))
62 | console.log(text.includes('Lorem'))
--------------------------------------------------------------------------------
/Clase 48/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Librería validaciones
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/Clase 48/validate.js:
--------------------------------------------------------------------------------
1 | const validateDni = (dni) => {
2 | const validChars = 'TRWAGMYFPDXBNJZSQVHLCKET'
3 | const nifRexp = /^[0-9]{8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/i
4 | const nieRexp = /^[XYZ]{1}[0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/i
5 | const str = dni.toString().toUpperCase()
6 |
7 | if(!nifRexp.test(str) && !nieRexp.test(str)) console.log('DNI incorrecto')
8 |
9 | const nie = str
10 | .replace(/^[X]/, '0')
11 | .replace(/^[Y]/, '1')
12 | .replace(/^[Z]/, '2')
13 |
14 | const letter = str.substr(-1)
15 | const charIndex = parseInt(nie.substr(0, 8)) % 23
16 |
17 | if(validChars.charAt(charIndex) === letter) console.log('DNI válido')
18 |
19 | console.log('DNI incorrecto')
20 | }
21 |
22 | const validateEmail = (email) => {
23 | const emailRegex = /^(([^<>()\[\]\\.,:\s@"]+(\.[^<>()\[\]\\.,:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
24 |
25 | if(emailRegex.test(email)) console.log('email válido')
26 | else console.log('email incorrecto')
27 | }
28 |
29 | const validateIban = (iban) => {
30 | const ibanRegex = /([A-Z]{2})\s*\t*(\d\d)\s*\t*(\d\d\d\d)\s*\t*(\d\d\d\d)\s*\t*(\d\d)\s*\t*(\d\d\d\d\d\d\d\d\d\d)/g
31 |
32 | if(ibanRegex.test(iban)) console.log('iban válido')
33 | else console.log('iban incorrecto')
34 | }
35 |
36 | const validatePasswordComplex = (password) => {
37 | //Should have 1 lowercase letter, 1 uppercase letter, 1 number, 1 special character and be at least 8 characters long
38 | const passwordRegex = /(?=(.*[0-9]))(?=.*[\!@#$%^&*()\\[\]{}\-_+=~`|:"'<>,./?])(?=.*[a-z])(?=(.*[A-Z]))(?=(.*)).{8,}/
39 | if(passwordRegex.test(password)) console.log('password válido')
40 | else console.log('password incorrecto')
41 | }
42 |
43 | const validatePasswordModerate = (password) => {
44 | //Should have 1 lowercase letter, 1 uppercase letter, 1 number, and be at least 8 characters long
45 | const passwordRegex = /(?=(.*[0-9]))((?=.*[A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z]))^.{8,}$/
46 | if(passwordRegex.test(password)) console.log('password válido')
47 | else console.log('password incorrecto')
48 | }
49 |
50 | const validateUsername = (username) => {
51 | //Alphanumeric string that may include _ and – having a length of 3 to 16 characters –
52 | const usernameRegex = /^[a-z0-9_-]{3,16}$/
53 | if(usernameRegex.test(username)) console.log('username válido')
54 | else console.log('username incorrecto')
55 | }
56 |
57 | const validateUrl = (url) => {
58 | const urlRegex = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#()?&//=]*)/
59 | if(urlRegex.test(url)) console.log('url válida')
60 | else console.log('url incorrecta')
61 | }
62 |
63 | const validateIP = (ip) => {
64 | const ipRegex = /((^\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\s*$)|(^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$))/g
65 | if(ipRegex.test(ip)) console.log('ip válida')
66 | else console.log('ip incorrecta')
67 | }
68 |
69 | const validateHexadecimal = (hexadecimal) => {
70 | const hexadecimalRegex = /^#?([a-f0-9]{6}|[a-f0-9]{3})$/
71 | if(hexadecimalRegex.test(hexadecimal)) console.log('hexadecimal válido')
72 | else console.log('hexadecimal incorrecto')
73 | }
74 |
75 | const validateCreditCard = (card) => {
76 | const creditCardRegex = /^(?:4[0-9]{12}(?:[0-9]{3})?|[25][1-7][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/
77 | if(creditCardRegex.test(card)) console.log('card válido')
78 | else console.log('card incorrecto')
79 | }
80 |
81 | validateEmail('dorian@gmail.com')
--------------------------------------------------------------------------------
/Clase 49/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | API Web Storage
7 |
8 |
9 |
10 |
11 |
22 |
23 |
24 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/Clase 49/scripts.js:
--------------------------------------------------------------------------------
1 | /*
2 | API webStorage:
3 | Los dos mecanismos en el almacenamiento web son los siguientes:
4 |
5 | sessionStorage mantiene un área de almacenamiento separada para cada origen que está disponible mientras dure la sesión de la página (mientras el navegador esté abierto, incluyendo recargas de página y restablecimientos).
6 |
7 | localStorage hace lo mismo, pero persiste incluso cuando el navegador se cierre y se reabra.
8 |
9 | Ambos funcionan con clave:valor y tienen dos métodos fundamentales setItem() para asignar una clave:valor y getItem() que recibe como parámetro la clave de la que quieremos obtener el valor
10 | */
11 |
12 | const form = document.getElementById('form')
13 | const keys = document.getElementById('keys')
14 |
15 | form.addEventListener('submit', (e) => {
16 | e.preventDefault()
17 |
18 | // const person = {
19 | // name: 'Dorian',
20 | // email: 'dorian@gmail.com'
21 | // }
22 |
23 | // sessionStorage.setItem('person', JSON.stringify(person))
24 | // sessionStorage.setItem('name', 'Dorian')
25 |
26 | localStorage.setItem(form.key.value, form.value.value)
27 |
28 | keys.innerHTML += ``
29 |
30 | form.reset()
31 | })
32 |
33 | keys.addEventListener('change', () => {
34 | document.getElementById('infoValue').textContent =
35 | localStorage.getItem(keys[ keys.selectedIndex ].textContent)
36 | })
37 |
38 | // localStorage.clear()
39 | localStorage.removeItem('name')
--------------------------------------------------------------------------------
/Clase 49/styles.css:
--------------------------------------------------------------------------------
1 | .form {
2 | margin-bottom: 1rem;
3 | }
4 | .form__field {
5 | display: flex;
6 | justify-content: space-between;
7 | width: 200px;
8 | margin-bottom: 1rem;
9 | }
10 |
11 | .info {
12 | display: flex;
13 | align-items: center;
14 | }
15 |
16 | .info p {
17 | margin: 0 1rem;
18 | }
19 |
--------------------------------------------------------------------------------
/Clase 5/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Condicional if
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Clase 5/scripts.js:
--------------------------------------------------------------------------------
1 | /* Condicional simple */
2 | let num = 3;
3 |
4 | if(num>0){
5 | console.log(`${num} es mayor que 0`);
6 | console.log(`${num} es mayor que 0`);
7 | }
8 |
9 | /* Condicional compuesto */
10 | if(num>0){
11 | console.log(`${num} es mayor que 0`);
12 |
13 | }else{
14 | console.log(`${num} es menor que 0`);
15 | }
16 |
17 | /* Condicional múltiple */
18 |
19 | if(num>0){
20 | console.log(`${num} es mayor que 0`);
21 |
22 | }else if(num<0){
23 | console.log(`${num} es menor que 0`);
24 | }else{
25 | console.log(`${num} es igual a 0`);
26 | }
27 |
28 |
29 | let num1 = 0;
30 | let num2 = 0;
31 | /* Operadores lógicos */
32 |
33 | /* && and */
34 | /* || o */
35 |
36 | if(num1>0){
37 | if(num2>0){
38 | console.log(`${num1} y ${num2} son mayores que 0`);
39 | }else if(num2<0){
40 | console.log(`${num1} es mayor que 0 y num 2 es menor que 0`);
41 | }else{
42 | console.log(`${num1} es mayor que 0 y num 2 es igual a 0`);
43 | }
44 | }else if(num1<0){
45 | if(num2>0){
46 | console.log(`${num1} no es mayor que 0 y ${num2} es mayor que 0`);
47 | }else if(num2<0){
48 | console.log(`${num1} y ${num2} son menores que 0`);
49 | }else{
50 | console.log(`${num1} es menor que 0 y num 2 es igual a 0`);
51 | }
52 | }else{
53 | if(num2>0){
54 | console.log(`${num1} es igual a 0 y ${num2} es mayor que 0`);
55 | }else if(num2<0){
56 | console.log(`${num1} es igual a 0 y ${num2} es menor que 0`);
57 | }else{
58 | console.log(`${num1} y ${num2} son iguales a 0`);
59 | }
60 | }
61 |
62 | let word = 'Hola';
63 |
64 | if(word.length>4){
65 | console.log(`${word} tiene más de 4 letras`);
66 | }else if(word.length<4){
67 | console.log(`${word} tiene menos de 4 letras`);
68 | }else{
69 | console.log(`${word} tiene 4 letras`);
70 | }
71 |
72 | let respuesta = true;
73 |
74 | if(respuesta==true) console.log(`Respuesta tiene el valor true`);
75 | if(respuesta==false) console.log(`Respuesta tiene el valor false`);
76 |
77 | if(respuesta) console.log(`Respuesta tiene el valor true`);
78 | if(!respuesta) console.log(`Respuesta tiene el valor false`);
79 |
--------------------------------------------------------------------------------
/Clase 50/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | API Drag & Drop
7 |
8 |
9 |
10 |
11 |
12 |
Drop Zone
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Clase 50/scripts.js:
--------------------------------------------------------------------------------
1 | /*
2 | API drag & drop:
3 |
4 | Existen dos partes principales en esta API, el objeto a arrastrar y la zona donde vamos a dejarlo
5 |
6 | Para controlar estas acciones tenemos varios eventos de cada una de las partes
7 | Objeto a arrastrar:
8 | dragstart: Se dispara al comenzar a arrastrar
9 | drag: Se dispara mientras arrastramos
10 | dragend: Se dispara cuando soltamos el objeto
11 |
12 | Zona de destino:
13 | dragenter: Se dispara cuando el objeto entra en la zona de destino
14 | dragover: Se dispara cuando el objeto se mueve sobre la zona de destino
15 | drop: Se dispara cuando soltamos el objeto en la zona de destino
16 | dragleave: Se dispara cuando el objeto sale de la zona de destino
17 | */
18 |
19 | const smile = document.getElementById('smile')
20 | const dropZone = document.getElementById('drop-zone')
21 |
22 | smile.addEventListener('dragend', () => {
23 | console.log('Drag End')
24 | })
25 |
26 | dropZone.addEventListener('dragover', (e) => {
27 | e.preventDefault()
28 | console.log('Drag Over')
29 | })
30 |
31 | dropZone.addEventListener('drop', (e) => {
32 | e.preventDefault()
33 | console.log('Drop')
34 | })
35 |
36 | dropZone.addEventListener('dragleave', (e) => {
37 | e.preventDefault()
38 | console.log('Drag Leave')
39 | })
40 |
41 |
42 |
--------------------------------------------------------------------------------
/Clase 50/smile.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
49 |
--------------------------------------------------------------------------------
/Clase 50/styles.css:
--------------------------------------------------------------------------------
1 | body {
2 | margin: 0;
3 | background-color: #26ff0085;
4 | font-family: sans-serif;
5 | }
6 |
7 | .smile {
8 | width: 50px;
9 | }
10 |
11 | .drop-zone {
12 | height: 100px;
13 | border: 2px dotted black;
14 | width: 100px;
15 | margin-top: 3rem;
16 | }
17 |
--------------------------------------------------------------------------------
/Clase 51/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | API Drag & Drop
7 |
8 |
9 |
10 |
11 |