1
+ /**
2
+ * Demostración de diferentes mecanismos de iteración en JavaScript
3
+ *
4
+ * JavaScript, como lenguaje moderno y versátil, ofrece múltiples formas
5
+ * de realizar iteraciones. Cada método tiene sus propias características
6
+ * y casos de uso óptimos.
7
+ */
8
+
9
+ console . log ( "=== Demostración de Mecanismos de Iteración en JavaScript ===\n" ) ;
10
+
11
+ // 1. Bucle for tradicional
12
+ console . log ( "1. Usando bucle for tradicional:" ) ;
13
+ /*
14
+ * El bucle for es uno de los más básicos y ampliamente utilizados.
15
+ * Sintaxis: for (inicialización; condición; incremento)
16
+ * Es muy similar a otros lenguajes como Java o C++
17
+ */
18
+ for ( let i = 1 ; i <= 10 ; i ++ ) {
19
+ process . stdout . write ( i + " " ) ;
20
+ }
21
+ console . log ( "\n" ) ;
22
+
23
+ // 2. Bucle while
24
+ console . log ( "2. Usando bucle while:" ) ;
25
+ /*
26
+ * El bucle while ejecuta un bloque de código mientras
27
+ * una condición específica sea verdadera.
28
+ */
29
+ let contador = 1 ;
30
+ while ( contador <= 10 ) {
31
+ process . stdout . write ( contador + " " ) ;
32
+ contador ++ ;
33
+ }
34
+ console . log ( "\n" ) ;
35
+
36
+ // 3. Bucle do...while
37
+ console . log ( "3. Usando bucle do...while:" ) ;
38
+ /*
39
+ * Similar al while, pero garantiza que el código se ejecute
40
+ * al menos una vez, ya que la condición se evalúa al final.
41
+ */
42
+ let num = 1 ;
43
+ do {
44
+ process . stdout . write ( num + " " ) ;
45
+ num ++ ;
46
+ } while ( num <= 10 ) ;
47
+ console . log ( "\n" ) ;
48
+
49
+ // 4. forEach con array
50
+ console . log ( "4. Usando forEach con array:" ) ;
51
+ /*
52
+ * El método forEach es una forma más funcional de iterar
53
+ * sobre elementos de un array.
54
+ */
55
+ const numeros = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ] ;
56
+ numeros . forEach ( numero => process . stdout . write ( numero + " " ) ) ;
57
+ console . log ( "\n" ) ;
58
+
59
+ // 5. for...of loop
60
+ console . log ( "5. Usando for...of:" ) ;
61
+ /*
62
+ * Introducido en ES6, for...of proporciona una forma más concisa
63
+ * de iterar sobre elementos iterables (arrays, strings, etc.)
64
+ */
65
+ for ( const numero of numeros ) {
66
+ process . stdout . write ( numero + " " ) ;
67
+ }
68
+ console . log ( "\n" ) ;
69
+
70
+ // 6. Array.from con mapeo
71
+ console . log ( "6. Usando Array.from con mapeo:" ) ;
72
+ /*
73
+ * Array.from puede crear un array a partir de un objeto iterable
74
+ * y permite mapear valores durante la creación
75
+ */
76
+ Array . from ( { length : 10 } , ( _ , i ) => i + 1 )
77
+ . forEach ( num => process . stdout . write ( num + " " ) ) ;
78
+ console . log ( "\n" ) ;
79
+
80
+ // 7. Recursión
81
+ console . log ( "7. Usando recursión:" ) ;
82
+ /*
83
+ * Aunque técnicamente no es un loop, la recursión es otra forma
84
+ * de realizar iteraciones mediante una función que se llama a sí misma
85
+ */
86
+ function contarHasta10 ( n = 1 ) {
87
+ process . stdout . write ( n + " " ) ;
88
+ if ( n < 10 ) contarHasta10 ( n + 1 ) ;
89
+ }
90
+ contarHasta10 ( ) ;
91
+ console . log ( "\n" ) ;
92
+
93
+ // 8. Map
94
+ console . log ( "8. Usando Map:" ) ;
95
+ /*
96
+ * Similar a forEach, pero crea un nuevo array con los resultados
97
+ * de llamar a una función para cada elemento
98
+ */
99
+ console . log ( Array ( 10 ) . fill ( ) . map ( ( _ , index ) => index + 1 ) . join ( " " ) ) ;
100
+
101
+ // 9. Generator function
102
+ console . log ( "9. Usando Generator function:" ) ;
103
+ /*
104
+ * Las funciones generadoras permiten definir un algoritmo iterativo
105
+ * escribiendo una función que puede mantener su propio estado
106
+ */
107
+ function * generarNumeros ( ) {
108
+ for ( let i = 1 ; i <= 10 ; i ++ ) {
109
+ yield i ;
110
+ }
111
+ }
112
+
113
+ for ( const num of generarNumeros ( ) ) {
114
+ process . stdout . write ( num + " " ) ;
115
+ }
116
+ console . log ( "\n" ) ;
117
+
118
+ // 10. Reduce
119
+ console . log ( "10. Usando Reduce (aunque no es su uso típico):" ) ;
120
+ /*
121
+ * Reduce normalmente se usa para acumular valores, pero también
122
+ * puede usarse para iterar realizando una acción en cada paso
123
+ */
124
+ Array ( 10 ) . fill ( ) . reduce ( ( _ , __ , i ) => {
125
+ process . stdout . write ( ( i + 1 ) + " " ) ;
126
+ return null ;
127
+ } , null ) ;
128
+ console . log ( "\n" ) ;
129
+
130
+ console . log ( "\n=== Fin de la demostración ===" ) ;
0 commit comments