1+ //1 - Muestra ejemplos de creación de todas las estructuras soportadas por defecto en tu lenguaje.
2+ // en object lo valores se pasan por referencia y en primitivos por valor****
3+
4+ console . log ( typeof null ) //object, (e la teoria deberia ser null primitivo)***
5+ // objects
6+ console . log ( typeof { } ) //object : objeto
7+ console . log ( typeof [ ] ) //object :array
8+ const set = new Set ( )
9+ console . log ( typeof set ) //object : añadir datos a la array
10+
11+ // cada constructor de las funciones se deriaba del contructor object pero es un objeto especial
12+ // function
13+ console . log ( typeof function ( ) { } ) //function pero por detras es un objeto especial
14+
15+ //tipdos en un array
16+ let numbers = [ 1 , 2 , 3 , 4 ] ;
17+ let letters = [ 'a' , 'b' , 'c' , 'd' ] ;
18+ let combined = [ 'abc' , true , 'def' , false ] ;
19+ let users = [ //array de objetos
20+ {
21+ id : 1 ,
22+ name : 'Andres' ,
23+ subscribed : true
24+ } ,
25+ {
26+ id : 2 ,
27+ name : 'Brais' ,
28+ subscribed : false
29+ }
30+ ] ;
31+ console . log ( 'users' , users ) ;
32+
33+ //2- Utiliza operaciones de inserción, borrado, actualización y ordenación.
34+
35+ let frutas = [ "Manzana" , "Banana" ] ;
36+ console . log ( frutas . length ) ; //2
37+
38+ frutas . push ( 'uva' ) //inserción
39+ console . log ( frutas + ' metodo push' ) ; //[ 'Manzana', 'Banana', 'uva' ]
40+ frutas . pop ( ) //borrado
41+ console . log ( frutas + ' metodo pop' ) ; //[ 'Manzana', 'Banana', ]
42+
43+ let mejoresCarros2023 = [ "audi" , "ferrari" , "renol" , "nisan" , "honda" ]
44+ console . log ( mejoresCarros2023 )
45+ mejoresCarros2023 [ 2 ] = 'suzuki' //actualización
46+ console . log ( mejoresCarros2023 )
47+
48+ const numeros = [ 10 , 21 , 13 , 45 , 5 , 26 ] //ordenación
49+
50+ const descNumeros = numeros . sort ( ( a , b ) => a > b ? - 1 : 1 ) //[ 45, 26, 21, 13, 10, 5 ]
51+ console . log ( descNumeros )
52+
53+ const asenNumeros = numeros . sort ( ( a , b ) => a > b ? 1 : - 1 ) //[ 5, 10, 13, 21, 26, 45 ]
54+ console . log ( asenNumeros )
55+
56+ //set
57+ // es una estructura de datos qe nos permite almacenar colecciones de datos especificamente que no se van a repetir
58+ console . log ( '-----------------set' )
59+ const set1 = new Set ( )
60+
61+ set1 . add ( 1 )
62+ set1 . add ( 2 )
63+ set1 . add ( false )
64+ set1 . add ( [ 1 , 5 , 6 ] ) // guardado por valor - console.log(set1.has([1,5,6])) : false
65+ const arr = [ 1 , 5 , 6 ] //guardado por referencia
66+ set1 . add ( arr ) // console.log(set1.has(arr)) : true
67+ set1 . delete ( false )
68+
69+ console . log ( set1 . has ( arr ) )
70+ for ( item of set1 ) {
71+ console . log ( item )
72+ }
73+
74+ //map
75+ console . log ( '-----------------map' )
76+ const map = new Map ( )
77+
78+ map . set ( 1 , 'lunes' )
79+ map . set ( '2' , 3 )
80+ map . set ( false , 10 )
81+ console . log ( map . has ( 1 ) )
82+ console . log ( map . size )
83+ map . delete ( false )
84+ console . log ( map . size )
85+
86+ for ( item of map ) {
87+ console . log ( item )
88+ }
89+ for ( const [ key , value ] of map ) {
90+ console . log ( key , value )
91+ }
92+
93+ console . log ( map . get ( '2' ) )
94+
95+
96+ //3 EXTRA
97+ // Crea una agenda de contactos por terminal.
98+ // * - Debes implementar funcionalidades de búsqueda, inserción, actualización y eliminación de contactos.
99+ // * - Cada contacto debe tener un nombre y un número de teléfono.
100+ // * - El programa solicita en primer lugar cuál es la operación que se quiere realizar, y a continuación
101+ // * los datos necesarios para llevarla a cabo.
102+ // * - El programa no puede dejar introducir números de teléfono no númericos y con más de 11 dígitos.
103+ // * (o el número de dígitos que quieras)
104+ // * - También se debe proponer una operación de finalización del programa.
105+
106+
107+ const readline = require ( "readline" ) ;
108+
109+ const rl = readline . createInterface ( {
110+ input : process . stdin ,
111+ output : process . stdout ,
112+ } ) ;
113+
114+ let agenda = { }
115+
116+ function miAgenda ( ) {
117+
118+
119+
120+ rl . question ( "¿Qué operación quieres realizar? (buscar, insertar, actualizar, agenda, eliminar, salir): " , ( operacion ) => {
121+ switch ( operacion ) {
122+ case 'buscar' :
123+ rl . question ( '¿nombre de contacto?' , ( nombre ) => {
124+ if ( agenda [ nombre ] ) {
125+ console . log ( `Nombre: ${ nombre } Telefono: ${ agenda [ nombre ] } ` )
126+ miAgenda ( )
127+ } else {
128+ console . log ( "Contacto no encontrado." ) ;
129+ miAgenda ( )
130+ }
131+ } )
132+ miAgenda ( )
133+ break ;
134+ case 'insertar' :
135+ rl . question ( '¿cuales el nombre?:' , ( nombre ) => {
136+ rl . question ( '¿cual es el telfono?:' , ( telefono ) => {
137+ if ( ! isNaN ( telefono ) && telefono . toString ( ) . length <= 11 ) {
138+
139+ agenda [ nombre ] = telefono
140+ console . log ( "Contacto agrego correctamente." ) ;
141+ miAgenda ( )
142+ } else {
143+ console . log ( 'Error, el telefono solo acepta numeros, hasta 11 digitos' )
144+ miAgenda ( )
145+ }
146+ } )
147+ } )
148+
149+
150+ break ;
151+ case 'actualizar' :
152+ rl . question ( 'nombre de contacto ' , ( nombre ) => {
153+ if ( agenda [ nombre ] ) {
154+ rl . question ( 'introducel el nuevo numero de telefono' , ( telefono ) => {
155+ agenda [ nombre ] = telefono
156+ console . log ( 'se actualice exitosamente' )
157+ miAgenda ( )
158+ } )
159+ } else {
160+ console . log ( "Contacto no encontrado." ) ;
161+ miAgenda ( )
162+ }
163+ } )
164+ console . log ( 'actualizar' )
165+ break ;
166+ case 'eliminar' :
167+ rl . question ( 'Escriba el nombre de el contacto que se quiera eliminar' , ( nombre ) => {
168+ if ( agenda [ nombre ] ) {
169+ delete agenda [ nombre ]
170+ console . log ( 'fue eliminado eliminado' )
171+ miAgenda ( )
172+ }
173+ } )
174+ break ;
175+ case 'agenda' :
176+ console . log ( agenda )
177+ miAgenda ( )
178+ break ;
179+ case 'salir' :
180+ rl . close ( ) ;
181+ console . log ( 'saliendo de la agenda' )
182+ break ;
183+
184+ default :
185+ console . log ( 'Error al leer su respuesta , eliga una opcion valida' )
186+ miAgenda ( )
187+ break ;
188+ }
189+
190+ } )
191+
192+ }
193+
194+ miAgenda ( )
0 commit comments