1+ // 1. Arrays
2+ let arrayDatosSub = [ "Spira" , "Drazz" , "Espaby" , "Kainyan77" ] ;
3+ console . log ( "Array Inicial: " , arrayDatosSub ) ;
4+
5+ //Insercción
6+ arrayDatosSub . push ( "EloyParga" ) ; //Añade un elemento al final
7+ console . log ( "Despues de la insercción" , arrayDatosSub ) ;
8+
9+ //Boorar
10+ arrayDatosSub . slice ( 0 , 1 ) ;
11+ console . log ( "Despues de Borrar" , arrayDatosSub ) ;
12+
13+ //Actualización
14+ arrayDatosSub [ 2 ] = "ESPABY" ;
15+ console . log ( "Despues de Actualizar " , arrayDatosSub )
16+
17+ //Ordenación
18+ /**
19+ * @method sort()
20+ * por defecto ordena lexicograficamente
21+ * por @param podemos pasarle de forma OPCIONAL
22+ * una regla que defina el orden de los elementos
23+ */
24+ arrayDatosSub . sort ( ( a , b ) => a . length - b . length ) ; // Odena de menor a mayor longitud de palabra
25+ console . log ( "Despues de ordenar " , arrayDatosSub )
26+
27+
28+ //2. Objetos
29+ let listaTrabajadores = {
30+ trabajador1 : "Manolo" ,
31+ trabajador2 : "Jony"
32+ }
33+ console . log ( "Objeto Inicial " , listaTrabajadores ) ;
34+
35+ //Insercción
36+ listaTrabajadores . trabajador3 = "Pepe" ;
37+ console . log ( "Despues de insertar " , listaTrabajadores )
38+
39+ //Borrar
40+ delete listaTrabajadores . trabajador1
41+ console . log ( "Despues de borrar " , listaTrabajadores ) ;
42+
43+ //Actualizar
44+ listaTrabajadores . trabajador2 = "Jonathan" ;
45+ console . log ( "Despues de actualizar " , listaTrabajadores ) ;
46+
47+
48+ // 3.Mapas
49+ let mapa = new Map ( ) ;
50+ mapa . set ( "a" , 1 ) ;
51+ mapa . set ( "b" , 2 ) ;
52+ console . log ( "Mapa Inicial: " , mapa ) ;
53+
54+ // Inserción
55+ mapa . set ( "c" , 3 ) ;
56+ console . log ( "Despues de la Inserción: " , mapa ) ;
57+
58+ // Borrar
59+ mapa . delete ( "b" ) ;
60+ console . log ( "Despues de Borrar: " , mapa ) ;
61+
62+ // Actualizar
63+ mapa . set ( "c" , 10 ) ;
64+ console . log ( "Despues de Actualizar: " , mapa ) ;
65+
66+
67+
68+ //DIFICULTAD EXTRA: AGENDA DE CONTACTOS
69+ const readline = require ( "readline" ) ;
70+
71+ const agenda = new Map ( ) ;
72+
73+ const rl = readline . createInterface ( {
74+ input : process . stdin ,
75+ output : process . stdout ,
76+ } ) ;
77+
78+ //validar que el numero sea válido
79+ function validacionNum ( numero ) {
80+ return / ^ [ 0 - 9 ] { 1 , 11 } $ / . test ( numero )
81+ }
82+
83+ //Funciones para las operaciones de la agenda
84+ function insertarContacto ( nombre , numero ) {
85+ if ( ! validacionNum ( numero ) ) {
86+ console . log ( "Numero de telefono no valido, debe contener solo numeros y maximo 11 digitos" ) ;
87+ return ;
88+ }
89+ agenda . set ( nombre , numero ) ;
90+ console . log ( "Contacto añadido" ) ;
91+ }
92+
93+ function buscarContacto ( nombre ) {
94+ if ( agenda . has ( nombre ) ) {
95+ console . log ( `Contacto encontrado: ${ nombre } - ${ agenda . get ( nombre ) } ` ) ;
96+ } else {
97+ console . log ( "Contacto no encontrado" ) ;
98+ }
99+ }
100+
101+ function actualizarContacto ( nombre , Newnumero ) {
102+ if ( ! agenda . has ( nombre ) ) {
103+ console . log ( "El contacto no existe" ) ;
104+ }
105+
106+ if ( ! validacionNum ( Newnumero ) ) {
107+ console . log ( "Numero de telefono no valido, debe contener solo numeros y maximo 11 digitos" ) ;
108+ return ;
109+ }
110+
111+ agenda . set ( { nombre, Newnumero} ) ;
112+ console . log ( "Contacto actualizado" ) ;
113+ }
114+
115+ function eliminarContacto ( nombre , ) {
116+ if ( agenda . delete ( nombre ) ) {
117+ console . log ( "Contacto Eliminado" ) ;
118+ } else {
119+ console . log ( "El contacto no existe" ) ;
120+ }
121+ }
122+
123+ function mostrarAgenda ( ) {
124+ if ( agenda . size === 0 ) {
125+ console . log ( "La agenda esta vacia" ) ;
126+ } else {
127+ console . log ( "==CONTACTO DE LA AGENDA==" ) ;
128+ agenda . forEach ( ( nombre , numero ) => {
129+ console . log ( `- ${ nombre } : ${ numero } ` ) ;
130+ } )
131+ }
132+ }
133+
134+
135+ //MENU AGENDA
136+
137+ function menu ( ) {
138+ console . log ( "\n=== AGENDA CONTACTOS ===" ) ;
139+ console . log ( "1. Insertar Contacto" ) ;
140+ console . log ( "2. Buscar Contacto" ) ;
141+ console . log ( "3. Actualizar Contacto" ) ;
142+ console . log ( "4. Eliminar Contacto" ) ;
143+ console . log ( "5. Mostrar todos los contacto" ) ;
144+ console . log ( "6. SALIR" ) ;
145+
146+ rl . question ( "Selecciona una opción: " , ( opcion ) => {
147+ switch ( opcion ) {
148+ case "1" :
149+ rl . question ( "Introduce el nombre" , ( nombre ) => {
150+ rl . question ( "Introduce el numero de telefono" , ( numero ) => {
151+ insertarContacto ( nombre , numero ) ;
152+ menu ( ) ;
153+ } ) ;
154+ } ) ;
155+ break ;
156+
157+ case "2" :
158+ rl . question ( "Introduce el nombre del contacto" , ( nombre ) => {
159+ buscarContacto ( nombre ) ;
160+ menu ( ) ;
161+ } ) ;
162+ break ;
163+
164+ case "3" :
165+ rl . question ( "Introduce el nombre" , ( nombre ) => {
166+ rl . question ( "Introduce el nuevo numero de telefono" , ( numero ) => {
167+ actualizarContacto ( nombre , numero ) ;
168+ menu ( ) ;
169+ } ) ;
170+ } ) ;
171+ break ;
172+
173+ case "4" :
174+ rl . question ( "Introduce el nombre del contacto que desea eliminar" , ( nombre ) => {
175+ eliminarContacto ( nombre ) ;
176+ menu ( ) ;
177+ } ) ;
178+ break ;
179+
180+ case "5" :
181+ mostrarAgenda ( ) ;
182+ menu ( ) ;
183+ break ;
184+
185+ case "6" :
186+ console . log ( "Ha salido de la agenda. ¡ADIOS!" ) ;
187+ rl . close ( ) ;
188+ break ;
189+
190+ default :
191+ console . log ( "Opcion no valida" ) ;
192+ menu ( ) ;
193+ }
194+ } ) ;
195+ }
196+
197+ //Inicializar el menu
198+ menu ( ) ;
0 commit comments