Skip to content

Commit e565c7e

Browse files
authored
Merge pull request #5371 from 7R0N1X/main
#3 - JavaScript
2 parents fc6986f + b43cfa3 commit e565c7e

File tree

2 files changed

+319
-0
lines changed
  • Roadmap
    • 03 - ESTRUCTURAS DE DATOS/javascript
    • 04 - CADENAS DE CARACTERES/javascript

2 files changed

+319
-0
lines changed
Lines changed: 222 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,222 @@
1+
// Array
2+
let numbers = [5, 0, 1]
3+
4+
numbers.push(2) // Añadir un elemento al final
5+
6+
numbers.unshift(-1) // Añadir un elemento al principio
7+
8+
numbers.pop() // Eliminar el último elemento
9+
10+
numbers.shift() // Eliminar el primer elemento
11+
12+
numbers[1] = 2 // Actualizar un elemento
13+
14+
numbers.sort() // Ordenación
15+
16+
// console.log(numbers)
17+
18+
19+
20+
// Set
21+
let mySet = new Set(numbers)
22+
23+
mySet.add(4) // Añadir un elemento
24+
25+
mySet.delete(5) // Elimina un elemento en específico
26+
27+
// console.log(mySet.has(5)) // Verifica si un elemento existe en el set
28+
29+
// console.log(mySet.size) // Devuelve el tamaño del set
30+
31+
mySet.clear() // Elimina todos los elementos del set
32+
33+
// Los sets no soportan ordenamiento
34+
35+
// console.log(mySet)
36+
37+
38+
39+
// Objetos
40+
let myCar = new Object()
41+
42+
myCar.make = "Ford"; // Añadir un elemento
43+
myCar.model = "Mustang";
44+
myCar.year = 2024;
45+
46+
delete myCar["year"] // Elimina un elemeneto en específico
47+
48+
myCar["model"] = "Ranger" // Actualización
49+
50+
// Los objetos no soportan ordenamiento
51+
52+
// console.log(myCar)
53+
54+
55+
56+
// Map
57+
let myMap = new Map()
58+
59+
myMap.set("Name", "7R0N1X") // Añadir un elemento
60+
myMap.set("Age", 24)
61+
myMap.set("Country", "Colombia")
62+
63+
myMap.delete("Age") // Eliminar
64+
65+
myMap.set("Country", "Ecuador") // Actualizar
66+
67+
// Los maps no soportan ordenamiento
68+
69+
// console.log(myMap)
70+
71+
72+
73+
// Dificultad extra
74+
let readline = require('readline')
75+
let rl = readline.createInterface({ input: process.stdin, output: process.stdout })
76+
let opc = 0
77+
let contacts = []
78+
79+
const App = () => {
80+
console.log(`
81+
**************************************************
82+
* *
83+
* GESTIÓN DE CONTACTOS *
84+
* *
85+
**************************************************
86+
* *
87+
* 1. Buscar contacto *
88+
* 2. Ingresar nuevo contacto *
89+
* 3. Actualizar contacto *
90+
* 4. Eliminar contacto *
91+
* 5. Salir *
92+
* *
93+
**************************************************
94+
`);
95+
96+
rl.question('Opción: ', (answer) => {
97+
opc = parseInt(answer)
98+
99+
switch (opc) {
100+
case 1:
101+
if (contacts.length === 0) {
102+
alerta('No hay contactos')
103+
App()
104+
} else {
105+
rl.question('Nombre: ', (nombre) => {
106+
filtrar(nombre)
107+
App()
108+
})
109+
}
110+
break
111+
case 2:
112+
rl.question('Nombre: ', (nombre) => {
113+
if (existe(nombre)) {
114+
alerta('Error: Nombre ya existe')
115+
App()
116+
} else {
117+
rl.question('Numero: ', (numero) => {
118+
if (/^\d{1,11}$/.test(numero) && Number(numero)) {
119+
let contact = { nombre, numero }
120+
ingresar(contact)
121+
alerta('Contacto ingresado correctamente')
122+
App()
123+
} else {
124+
alerta('Error: Número no válido')
125+
App()
126+
}
127+
})
128+
}
129+
})
130+
break
131+
case 3:
132+
rl.question('Nombre: ', (nombre) => {
133+
if (existe(nombre)) {
134+
rl.question('Numero: ', (numero) => {
135+
let contact = { nombre, numero }
136+
actualizar(contact)
137+
alerta('Contacto actualizado correctamente')
138+
App()
139+
})
140+
} else {
141+
alerta('Error: Nombre no existe')
142+
App()
143+
}
144+
})
145+
break
146+
case 4:
147+
rl.question('Nombre: ', (nombre) => {
148+
if (existe(nombre)) {
149+
eliminar(nombre)
150+
alerta('Contacto eliminado correctamente')
151+
App()
152+
} else {
153+
alerta('Error: El contacto no existe')
154+
App()
155+
}
156+
157+
})
158+
break
159+
case 5:
160+
rl.close()
161+
break
162+
default:
163+
alerta('Error: Opción desconocida')
164+
App()
165+
}
166+
})
167+
168+
function filtrar(nombre) {
169+
existe(nombre) ? mostrar(contacts.filter((contact) => contact.nombre === nombre)) : alerta('Error: El contacto no existe')
170+
}
171+
172+
function existe(nombre) {
173+
return contacts.find((contact) => contact.nombre === nombre)
174+
}
175+
176+
function ingresar(contact) {
177+
contacts = [...contacts, contact]
178+
}
179+
180+
function actualizar(contact) {
181+
let { nombre, numero } = contact
182+
contacts.map((contact) => {
183+
if (contact.nombre === nombre) {
184+
contact.numero = numero
185+
}
186+
})
187+
}
188+
189+
function eliminar(nombre) {
190+
contacts = contacts.filter((contact) => contact.nombre !== nombre)
191+
}
192+
193+
function mostrar(contacts) {
194+
console.log(`
195+
**************************************************
196+
* *
197+
* LISTA DE CONTACTOS *
198+
* *
199+
**************************************************
200+
`);
201+
contacts.map((contact) => {
202+
let { nombre, numero } = contact
203+
console.log(`
204+
**************************************************
205+
Nombre: ${nombre}
206+
Teléfono: ${numero}
207+
**************************************************
208+
`)
209+
})
210+
}
211+
212+
function alerta(mensaje) {
213+
console.log(`
214+
**************************************************
215+
${mensaje}
216+
**************************************************
217+
`)
218+
}
219+
220+
}
221+
222+
App()
Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
let sentence = "Esto es una prueba";
2+
3+
console.log(sentence.at(1)); // Retorna el caracter en la posición 1, permite valores negativos para contar desde el final de la cadena
4+
console.log(sentence.at(-1));
5+
6+
console.log(sentence.charAt(1)); // Retorna el caracter en la posición 1, no permite valores negativos
7+
8+
console.log(sentence.charCodeAt(1)); // Retorna el código unicode del caracter en la posición 1
9+
console.log(sentence.codePointAt(1));
10+
11+
let str1 = 'Hola'
12+
let str2 = 'Mundo'
13+
console.log(str1.concat(' ', str2)) // Concatena dos cadenas
14+
15+
console.log(sentence.endsWith('prueba')); // Comprueba si la cadena termina con el texto especificado
16+
17+
console.log(sentence.startsWith('Esto')); // Comprueba si la cadena comienza con el texto especificado
18+
19+
console.log(sentence.includes('es')); // Comprueba si la cadena contiene el texto especificado
20+
21+
console.log(sentence.indexOf('es')); // Devuelve la posición de la primera aparición del texto especificado en la cadena. No soporta expresiones regulares
22+
23+
console.log(sentence.isWellFormed()); // Comprueba si la cadena es un mensaje válido
24+
25+
console.log(sentence.lastIndexOf('a')); // Devuelve la posición de la última aparición del texto especificado en la cadena
26+
27+
let str3 = 'reservé'
28+
let str4 = 'RESERVE'
29+
console.log(str3.localeCompare(str4)); // Compara dos cadenas en base al idioma local
30+
31+
const paragraph = 'The quick brown fox jumps over the lazy dog. It barked.';
32+
const regex = /[A-Z]/g;
33+
console.log(paragraph.match(regex)) // Devuelve una lista de todas las coincidencias de la expresión regular
34+
35+
console.log(sentence.padEnd(25, '*')); // Agrega asteriscos al final de la cadena hasta alcanzar la longitud especificada
36+
37+
console.log(sentence.padStart(25)); // Agrega espacios al principio de la cadena hasta alcanzar la longitud especificada
38+
39+
console.log(str1.repeat(3)); // Repetir la cadena 3 veces
40+
41+
console.log(sentence.replace('es', 'is')); // Reemplaza el texto especificado por otro texto
42+
43+
console.log(sentence.replaceAll('es', 'is')); // Reemplaza todos los ocurrencias del texto especificado por otro texto
44+
45+
console.log(sentence.search('es')); // Devuelve la posición de la primera aparición del texto especificado en la cadena. Soporta expresiones regulares
46+
47+
console.log(sentence.slice(1, 3)); // Devuelve una nueva cadena que contiene las letras del texto original desde la posición especificada hasta la posición especificada - 1
48+
49+
console.log(sentence.split('es')); // Divide la cadena en una lista de cadenas, separando cada una por el texto especificado
50+
51+
console.log(sentence.substring(1, 3)); // Devuelve una nueva cadena que contiene las letras del texto original desde la posición especificada hasta la posición especificada
52+
53+
console.log(sentence.toLocaleLowerCase()); // Convierte la cadena a minúsculas en base al idioma local
54+
55+
console.log(sentence.toLocaleUpperCase()); // Convierte la cadena a mayúsculas en base al idioma local
56+
57+
console.log(sentence.toLowerCase()); // Convierte la cadena a minúsculas
58+
59+
console.log(sentence.toUpperCase()); // Convierte la cadena a mayúsculas
60+
61+
let str5 = new String('Hola Mundo');
62+
console.log(str5.toString()); // Convierte la cadena a una cadena de caracteres
63+
64+
console.log(str5.valueOf()); // Convierte la cadena a una cadena de caracteres
65+
66+
let str6 = ' Hola Mundo '
67+
console.log(str6.trim()); // Elimina espacios en blanco al principio y final de la cadena
68+
69+
console.log(str6.trimEnd()); // Elimina espacios en blanco al final de la cadena
70+
71+
console.log(str6.trimStart()); // Elimina espacios en blanco al principio de la cadena
72+
73+
console.log(sentence.length); // Devuelve la longitud de la cadena
74+
75+
76+
// Dificultad Extra
77+
let str7 = 'radar'
78+
let str8 = 'amor'
79+
let str9 = 'roma'
80+
let str10 = 'murcielago'
81+
82+
function polindromo(str) {
83+
return str.toLowerCase().split('').reverse().join('') === str.toLowerCase() ? true : false
84+
}
85+
86+
function anagrama(str1, str2) {
87+
return str1.toLowerCase().sort === str2.toLowerCase().sort ? true : false
88+
}
89+
90+
function isograma(str) {
91+
let mySet = new Set(str)
92+
return str.length === mySet.size ? true : false
93+
}
94+
95+
console.log(`¿La palabra ${str7} es políndroma?: ${polindromo(str7)}`)
96+
console.log(`¿Las palabras ${str8} y ${str9} son anagramas?: ${anagrama(str8, str9)} `)
97+
console.log(`¿La palabra ${str10} es un isograma?: ${isograma(str10)}`)

0 commit comments

Comments
 (0)