Skip to content

Commit 6f2f31a

Browse files
#3 - javascript
1 parent adf94d3 commit 6f2f31a

File tree

1 file changed

+207
-0
lines changed

1 file changed

+207
-0
lines changed
Lines changed: 207 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
/*
2+
* EJERCICIO:
3+
* - Muestra ejemplos de creación de todas las estructuras soportadas por defecto
4+
* en tu lenguaje.
5+
* - Utiliza operaciones de inserción, borrado, actualización y ordenación.
6+
*
7+
* DIFICULTAD EXTRA (opcional):
8+
* Crea una agenda de contactos por terminal.
9+
* - Debes implementar funcionalidades de búsqueda, inserción, actualización
10+
* y eliminación de contactos.
11+
* - Cada contacto debe tener un nombre y un número de teléfono.
12+
* - El programa solicita en primer lugar cuál es la operación que se quiere realizar,
13+
* y a continuación los datos necesarios para llevarla a cabo.
14+
* - El programa no puede dejar introducir números de teléfono no númericos y con más
15+
* de 11 dígitos (o el número de dígitos que quieras).
16+
* - También se debe proponer una operación de finalización del programa.
17+
*/
18+
19+
20+
console.log('--------------ESTRUCTURAS DE DATOS----------------');
21+
console.log('---------------------ARRAY------------------------');
22+
23+
const arr = [1, 2, 3];
24+
console.log('array: ', arr);
25+
arr.push(4);
26+
console.log('Inserción en el array de un 4. Resultado: ', arr);
27+
arr.pop();
28+
console.log('Borrado en el array', arr);
29+
arr.shift();
30+
console.log('Borrado del primer elemento en el array', arr);
31+
32+
let arrDesordenado = [2, 1, 0]
33+
console.log('array desordenando', arrDesordenado);
34+
arrDesordenado.sort()
35+
console.log('array ordenado', arrDesordenado);
36+
37+
arrDesordenado[0] = 10;
38+
console.log('actualizamos array desordenado', arrDesordenado);
39+
40+
console.log('---------------------SET------------------------');
41+
// Los sets solo permiten datos únicos, no puede haber dos elementos repetidos
42+
const miSet = new Set([1, 2, 3])
43+
console.log('mi set es', miSet);
44+
miSet.add(4);
45+
console.log('.add() añade un elemento a mi', miSet);
46+
miSet.delete(3);
47+
console.log('borrando el elemento 3', miSet);
48+
console.log('el set tiene el elemento 4?', miSet.has(4));
49+
miSet.clear();
50+
console.log('hacemos un clear del set', miSet);
51+
52+
53+
console.log('---------------------WEAKSET------------------------');
54+
const obj1 = {nombre: 'obj1'};
55+
const obj2 = {nombre: 'obj2'};
56+
const obj3 = {nombre: 'obj3'};
57+
58+
const miWeakSet = new WeakSet();
59+
miWeakSet.add(obj1);
60+
miWeakSet.add(obj2);
61+
console.log('my weak set', miWeakSet);
62+
miWeakSet.add(obj3);
63+
console.log('add obj3', miWeakSet);
64+
miWeakSet.delete(obj2);
65+
console.log('delete 3', miWeakSet);
66+
console.log('my weak set has obj1?', miWeakSet.has(obj1));
67+
68+
69+
console.log('---------------------WEAKMAP------------------------');
70+
let weakMap = new WeakMap();
71+
let key1 = {};
72+
let key2 = {};
73+
74+
weakMap.set(key1, "value1");
75+
weakMap.set(key2, "value2")
76+
77+
weakMap.delete(key1);
78+
79+
weakMap.set(key2, "newValue2");
80+
console.log(weakMap);
81+
82+
console.log('---------------------OBJETO------------------------');
83+
const persona = {
84+
nombre: 'Caterina',
85+
edad: 24,
86+
genero: 'f'
87+
}
88+
89+
persona.edad = 25;
90+
console.log(persona);
91+
92+
delete persona.genero;
93+
console.log(persona);
94+
95+
const sortedKeys = Object.keys(persona).sort();
96+
97+
let sortedObj = {};
98+
sortedKeys.map(key =>
99+
sortedObj[key] = persona[key]
100+
)
101+
console.log('objeto ordenado', sortedObj);
102+
103+
console.log('---------------------MAP------------------------');let map = new Map([
104+
["nombre", "Caterina"],
105+
["edad", 22],
106+
["genero", "f"]
107+
]);
108+
109+
map.set("casa", "Mallorca");
110+
111+
map.delete("genero");
112+
console.log(map);
113+
114+
let sortedMapArray = [...map.entries()].sort();
115+
let sortedMap = new Map(sortedMapArray);
116+
console.log(sortedMap);
117+
118+
console.log('--------------------EJERCICIO EXTRA------------------');
119+
120+
121+
/* DIFICULTAD EXTRA (opcional):
122+
* Crea una agenda de contactos por terminal.
123+
* - Debes implementar funcionalidades de búsqueda, inserción, actualización
124+
* y eliminación de contactos.
125+
* - Cada contacto debe tener un nombre y un número de teléfono.
126+
* - El programa solicita en primer lugar cuál es la operación que se quiere realizar,
127+
* y a continuación los datos necesarios para llevarla a cabo.
128+
* - El programa no puede dejar introducir números de teléfono no númericos y con más
129+
* de 11 dígitos (o el número de dígitos que quieras).
130+
* - También se debe proponer una operación de finalización del programa.
131+
*/
132+
const readline = require('readline');
133+
const rl = readline.createInterface(process.stdin, process.stdout);
134+
135+
let contacts = [];
136+
137+
const menu = () => {
138+
console.log(`
139+
------------------
140+
1. Añadir contacto
141+
2. Borrar contacto
142+
3. Opción sorpresa
143+
4. Ver contactos
144+
-----------------
145+
146+
`);
147+
rl.question('Elije mortal :) -> ', chooseOption)
148+
};
149+
150+
const chooseOption = (option) => {
151+
switch(option) {
152+
case '1':
153+
addContact();
154+
break;
155+
case '2':
156+
deleteContact();
157+
break;
158+
case '3':
159+
console.log('testim Grace, princeseta');
160+
case '4':
161+
listContacts();
162+
break;
163+
default:
164+
menu();
165+
}
166+
}
167+
168+
const addContact = () => {
169+
rl.question('Nombre pls -> ', (name) => addContactTelephone(name))
170+
}
171+
172+
const addContactTelephone = (name) => {
173+
rl.question('Teléfono porfa pls -> ', (tlf) => {
174+
if (tlf.length > 11) {
175+
console.log('El teléfono no puede ser mayor a 11 dígitos');
176+
addContactTelephone();
177+
}else if (!(/^\d{1,11}$/.test(tlf))) {
178+
console.log('El teléfono solo puede incluir dígitos numéricos');
179+
addContact();
180+
} else {
181+
contacts.push({nombre: name, telefono: tlf})
182+
console.log('siuuuu, contacto añadido');
183+
listContacts();
184+
}
185+
})
186+
}
187+
188+
const listContacts = () => {
189+
console.log(' ');
190+
console.log('------------------');
191+
console.log(' ');
192+
console.log('TUS CONTACTOS, REINA:');
193+
console.log(' ');
194+
contacts.map(contact => console.log(`Nombre: ${contact.nombre} - Teléfono: ${contact.telefono}`))
195+
menu();
196+
}
197+
198+
const deleteContact = () => {
199+
rl.question('A quien hacemos la cruz? -> ', (contact) => {
200+
contacts = contacts.filter(contact => contact.nombre === contact);
201+
console.log('eliminao >:)');
202+
menu();
203+
} );
204+
menu()
205+
}
206+
207+
menu();

0 commit comments

Comments
 (0)