Skip to content

Commit de71a16

Browse files
authored
Merge pull request mouredev#7691 from wapastorv/main
#16 - Javascript
2 parents 4d35a35 + 2531035 commit de71a16

File tree

4 files changed

+314
-3
lines changed

4 files changed

+314
-3
lines changed

Roadmap/15 - ASINCRONÍA/javascript/wapastorv.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,3 @@ asyncFunction('B', 2);
4343
asyncFunction('A', 1);
4444
asyncFunction('D', 1);
4545
// Fin de tu código
46-
47-
48-
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
/*
2+
* EJERCICIO:
3+
* Utilizando tu lenguaje, explora el concepto de expresiones regulares,
4+
* creando una que sea capaz de encontrar y extraer todos los números
5+
* de un texto.
6+
*
7+
* DIFICULTAD EXTRA (opcional):
8+
* Crea 3 expresiones regulares (a tu criterio) capaces de:
9+
* - Validar un email.
10+
* - Validar un número de teléfono.
11+
* - Validar una url.
12+
*/
13+
14+
15+
// Expresiones regulares en JavaScript
16+
/*
17+
Una expresión regular es una secuencia de caracteres que forma un patrón de búsqueda. Este patrón se puede usar para:
18+
19+
* Buscar texto dentro de una cadena.
20+
* Validar si una cadena cumple con un formato específico (por ejemplo, un correo electrónico o un número de teléfono).
21+
* Reemplazar partes de una cadena.
22+
*Extraer información específica de un texto.
23+
*/
24+
// Creación de una expresión regular en JavaScript
25+
/*
26+
1. Usando el constructor RegExp
27+
Ejemplo:
28+
var regex = new RegExp('pattern');
29+
var regex = new RegExp('pattern', 'flags');
30+
var regex = new RegExp(/pattern/);
31+
var regex = new RegExp(/pattern/, 'flags');
32+
*/
33+
/*
34+
2. Usando la notación literal
35+
Ejemplo:
36+
var regex = /pattern/;
37+
var regex = /pattern/flags;
38+
39+
Donde:
40+
- pattern es el patrón de búsqueda.
41+
- flags son los modificadores que se pueden aplicar a la expresión regular.
42+
43+
Las barras diagonales (/) se utilizan para delimitar la expresión regular, y los modificadores se colocan al final de la expresión regular.
44+
Pero las barras invertidas (\) se utilizan para escapar caracteres especiales dentro de la expresión regular.
45+
46+
Ejemplo:
47+
var regex = /pattern\./;
48+
var regex = /pattern\./i;
49+
*/
50+
51+
// Métodos de las expresiones regulares en JavaScript
52+
/*
53+
- test(): Comprueba si una cadena cumple con el patrón de la expresión regular.
54+
- exec(): Devuelve la primera coincidencia de la expresión regular en una cadena.
55+
- match(): Devuelve un array con todas las coincidencias de la expresión regular en una cadena.
56+
- matchAll(): Devuelve un iterador con todas las coincidencias de la expresión regular en una cadena.
57+
- search(): Devuelve la posición de la primera coincidencia de la expresión regular en una cadena.
58+
- replace(): Reemplaza las coincidencias de la expresión regular en una cadena.
59+
- replaceAll(): Reemplaza todas las coincidencias de la expresión regular en una cadena.
60+
- split(): Divide una cadena en un array de subcadenas utilizando la expresión regular como separador.
61+
62+
*/
63+
// las banderas o flags que se pueden utilizar en una expresión regular en JavaScript son:
64+
/*
65+
- i: Realiza una búsqueda sin distinguir entre mayúsculas y minúsculas.
66+
- g: Realiza una búsqueda global en toda la cadena.
67+
- m: Realiza una búsqueda multilinea.
68+
- u: Habilita el modo Unicode.
69+
- y: Realiza una búsqueda pegajosa (sticky).
70+
- s: Habilita el modo dotall.
71+
- x: Ignora los espacios en blanco y permite comentarios en la expresión regular.
72+
- U: Deshabilita el modo Unicode.
73+
- A: Realiza una búsqueda en la cadena completa.
74+
- D: Realiza una búsqueda en la cadena completa, pero excluye el último carácter.
75+
- J: Realiza una búsqueda en la cadena completa, incluyendo el último carácter.
76+
*/
77+
// Caracteres especiales en las expresiones regulares en JavaScript
78+
79+
/*
80+
- \d: Representa cualquier dígito (0-9).
81+
- \D: Representa cualquier carácter que no sea un dígito.
82+
- \w: Representa cualquier carácter alfanumérico (incluyendo el guion bajo _).
83+
- \W: Representa cualquier carácter que no sea alfanumérico.
84+
- \s: Representa cualquier carácter de espacio en blanco.
85+
- \S: Representa cualquier carácter que no sea un espacio en blanco.
86+
- \b: Representa un límite de palabra.
87+
- \B: Representa un límite que no sea de palabra.
88+
- \n: Representa un salto de línea.
89+
- \t: Representa un tabulador.
90+
- \r: Representa un retorno de carro.
91+
- \f: Representa un salto de página.
92+
- \v: Representa un tabulador vertical.
93+
- \0: Representa el carácter nulo.
94+
- \xhh: Representa el carácter ASCII especificado por los dos dígitos hexadecimales hh.
95+
- \uhhhh: Representa el carácter Unicode especificado por los cuatro dígitos hexadecimales hhhh.
96+
- \cX: Representa un control ASCII, donde X es una letra en mayúscula.
97+
- \: Escapa un carácter especial.
98+
- .: Representa cualquier carácter, excepto un salto de línea.
99+
- ^: Representa el inicio de una cadena.
100+
- $: Representa el final de una cadena.
101+
- *: Representa cero o más repeticiones del elemento anterior.
102+
- +: Representa una o más repeticiones del elemento anterior.
103+
- ?: Representa cero o una repetición del elemento anterior.
104+
- {n}: Representa exactamente n repeticiones del elemento anterior.
105+
- {n,}: Representa n o más repeticiones del elemento anterior.
106+
- {n,m}: Representa entre n y m repeticiones del elemento anterior.
107+
- (x): Representa un grupo de captura.
108+
- [xyz]: Representa un conjunto de caracteres.
109+
- ` `: Representa un conjunto de caracteres que no están en el rango especificado.
110+
*/
111+
112+
// Ejercicio: Encontrar y extraer todos los números de un texto en JavaScript
113+
// Crear una expresión regular que encuentre y extraiga todos los números de un texto en JavaScript.
114+
115+
// Ejemplo:
116+
var text = 'En el año 2021, el precio del producto es $25.50 y el descuento es del 10%.';
117+
var regex = /\d+/g; // Expresión regular para encontrar números
118+
var numbers = text.match(regex);
119+
console.log(numbers);// Output: ['2021', '25', '50', '10']
120+
121+
// Explicación:
122+
// - La expresión regular /\d+/g busca uno o más dígitos en el texto.
123+
// - El modificador g se utiliza para realizar una búsqueda global en todo el texto.
124+
// - El método match() devuelve un array con todas las coincidencias encontradas.
125+
126+
// Ejercicio extra: Validar un email, un número de teléfono y una URL en JavaScript
127+
// Crear expresiones regulares que validen un email, un número de teléfono y una URL en JavaScript.
128+
129+
// Ejemplo:
130+
var emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
131+
var phoneRegex = /^\+\d{1,3}\s?\(\d{1,3}\)\s?\d{3}-\d{4}$/;
132+
var urlRegex = /^(https?:\/\/)?(www\.)?[a-zA-Z0-9-]+\.[a-zA-Z]{2,}\/?$/;
133+
134+
var email = '[email protected]';
135+
var phone = '+57 (32) 353-7890';
136+
var url = 'https://www.example.com';
137+
138+
console.log(emailRegex.test(email)); // Output: true
139+
console.log(phoneRegex.test(phone)); // Output: true
140+
console.log(urlRegex.test(url)); // Output: true
141+
142+
// Explicación:
143+
// - La expresión regular /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/ valida un email.
144+
// - La expresión regular /^\+\d{1,3}\s?\(\d{1,3}\)\s?\d{3}-\d{4}$/ valida un número de teléfono.
145+
// - La expresión regular /^(https?:\/\/)?(www\.)?[a-zA-Z0-9-]+\.[a-zA-Z]{2,}\/?$/ valida una URL.
146+
147+
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
/*
2+
* EJERCICIO:
3+
* Utilizando tu lenguaje, emplea 3 mecanismos diferentes para imprimir
4+
* números del 1 al 10 mediante iteración.
5+
*
6+
* DIFICULTAD EXTRA (opcional):
7+
* Escribe el mayor número de mecanismos que posea tu lenguaje
8+
* para iterar valores. ¿Eres capaz de utilizar 5? ¿Y 10?
9+
*/
10+
11+
// Mecanismo 1: for
12+
console.log('Mecanismo 1: for');
13+
for (var i = 1; i <= 10; i++) {
14+
console.log(i);
15+
}
16+
17+
// Mecanismo 2: while
18+
var i = 1;
19+
console.log('Mecanismo 2: while');
20+
while (i <= 10) {
21+
console.log(i);
22+
i++;
23+
}
24+
25+
// Mecanismo 3: do-while
26+
var i = 1;
27+
console.log('Mecanismo 3: do-while');
28+
do {
29+
console.log(i);
30+
i++;
31+
} while (i <= 10);
32+
33+
// Mecanismo 4: forEach
34+
console.log('Mecanismo 4: forEach');
35+
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].forEach(function (i) {
36+
console.log(i);
37+
});
38+
39+
// Mecanismo 5: for...in
40+
console.log('Mecanismo 5: for...in');
41+
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
42+
for (var indice in numbers) {
43+
console.log(numbers[indice]);
44+
}
45+
// Mecanismo 6: for...of
46+
console.log('Mecanismo 6: for...of');
47+
for (var number of numbers) {
48+
console.log(number);
49+
}
50+
51+
52+
// Mecanismo 7: map
53+
console.log('Mecanismo 7: map');
54+
numbers.map(function (i) {
55+
console.log(i);
56+
});
57+
58+
// Mecanismo 8: reduce
59+
console.log('Mecanismo 8: reduce');
60+
numbers.reduce((acc,number) => {
61+
console.log(number);
62+
return acc;
63+
},0);
64+
65+
// mecanismo 9: array.from
66+
console.log('Mecanismo 9: array.from');
67+
Array.from({ length: 10 }, (_, i) => i + 1).forEach(number => {
68+
console.log(number);
69+
});
70+
71+
// Mecanismo 10: array.prototype.keys
72+
console.log('Mecanismo 10: array.prototype.keys');
73+
[...Array(10).keys()].forEach(number => {
74+
console.log(number + 1);
75+
});
76+
77+
78+
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
/*
2+
* EJERCICIO:
3+
* Utilizando tu lenguaje crea un conjunto de datos y realiza las siguientes
4+
* operaciones (debes utilizar una estructura que las soporte):
5+
* - Añade un elemento al final.
6+
* - Añade un elemento al principio.
7+
* - Añade varios elementos en bloque al final.
8+
* - Añade varios elementos en bloque en una posición concreta.
9+
* - Elimina un elemento en una posición concreta.
10+
* - Actualiza el valor de un elemento en una posición concreta.
11+
* - Comprueba si un elemento está en un conjunto.
12+
* - Elimina todo el contenido del conjunto.
13+
*/
14+
15+
/*
16+
La estructura de datos que se va a utilizar es un arreglo, ya que es una estructura que soporta todas las operaciones que se piden en el ejercicio.
17+
*/
18+
19+
let arregloDeNumeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
20+
21+
// Agregar un número al final del arreglo
22+
arregloDeNumeros.push(11);
23+
console.log(arregloDeNumeros);// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
24+
25+
// Agregar un número al principio del arreglo
26+
arregloDeNumeros.unshift(0);
27+
console.log(arregloDeNumeros);// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
28+
29+
// Agregar varios números al final del arreglo
30+
arregloDeNumeros.push(12, 13, 14, 15);
31+
console.log(arregloDeNumeros); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
32+
33+
// Agregar varios números en una posición concreta
34+
arregloDeNumeros.splice(5, 0, 5.1, 5.2, 5.3);
35+
console.log(arregloDeNumeros); // [0, 1, 2, 3, 4, 5, 5.1, 5.2, 5.3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
36+
37+
// Eliminar un elemento en una posición concreta
38+
arregloDeNumeros.splice(5, 1);
39+
console.log(arregloDeNumeros); // [0, 1, 2, 3, 4, 5.1, 5.2, 5.3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
40+
41+
// Actualizar el valor de un elemento en una posición concreta
42+
arregloDeNumeros[5] = 5;
43+
console.log(arregloDeNumeros); // [0, 1, 2, 3, 4, 5, 5.2, 5.3, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
44+
45+
// Comprobar si un elemento está en un conjunto
46+
console.log(arregloDeNumeros.includes(5)); // true
47+
48+
// Eliminar todo el contenido del conjunto
49+
//arregloDeNumeros = [];
50+
//console.log(arregloDeNumeros); // []
51+
52+
53+
54+
const array1 = [1, 2, 3, 6];
55+
const array2 = [1, 2, 3, 4, 5];
56+
57+
// Operaciones de conjuntos con arreglos en JavaScript usando Set y Arreglos directamente
58+
// Set es una estructura de datos que no permite elementos duplicados
59+
const unionArraySet = new Set([...array1, ...array2]);
60+
console.log("Union de conjuntos con SET: ",unionArraySet); // [1, 2, 3, 1, 2, 3, 4, 5]
61+
62+
// Arreglos directamente
63+
const unionArray = (array1, array2) => {
64+
return [...new Set([...array1, ...array2])];
65+
}
66+
console.log("Union de arreglos",unionArray(array1, array2)); // [1, 2, 3, 4, 5, 6]
67+
68+
69+
// Intersección de conjuntos
70+
// Set es una estructura de datos que no permite elementos duplicados
71+
const conjuntoA = new Set(array1);
72+
const conjuntoB = new Set(array2);
73+
74+
const intersectionArraySet =conjuntoA.filter(x => conjuntoB.has(x));
75+
console.log("Intersecion de conjuntos con SET",intersectionArraySet); // [1, 2, 3]
76+
// Intersección de arreglos directamente
77+
78+
79+
const intersectionArray = (array1, array2) => {
80+
return array1.filter(value => array2.includes(value));
81+
}
82+
console.log("Intersecion de arreglos",intersectionArray(array1, array2)); // [1, 2, 3]
83+
84+
85+
86+
87+
const differenceArraySet = new Set(array1.filter(x => !array2.includes(x)));
88+
console.log(differenceArraySet); // [6]
89+

0 commit comments

Comments
 (0)