1
00:00:01,260 --> 00:00:03,990
Muy bien, entonces abordamos el mapa.

2
00:00:03,990 --> 00:00:05,580
y el método de filtrado

3
00:00:05,580 --> 00:00:08,340
Y ahora es el momento del método único.

4
00:00:08,340 --> 00:00:12,453
que los gobierna a todos, que es el método reducido.

5
00:00:13,860 --> 00:00:17,100
Entonces, el método reducido es realmente el más versátil.

6
00:00:17,100 --> 00:00:22,080
y el más poderoso de todos los métodos de matriz en JavaScript.

7
00:00:22,080 --> 00:00:24,540
Entonces, de hecho, probablemente podríamos implementar

8
00:00:24,540 --> 00:00:28,710
todos los demás métodos, simplemente usando el método reducido,

9
00:00:28,710 --> 00:00:31,440
pero eso sería demasiado trabajo.

10
00:00:31,440 --> 00:00:35,010
Y es por eso que tenemos todos estos otros métodos

11
00:00:35,010 --> 00:00:37,170
que son mucho más fáciles de usar.

12
00:00:37,170 --> 00:00:41,310
Entonces, realmente no profundizaré en el método reducido aquí,

13
00:00:41,310 --> 00:00:45,930
porque podríamos pasar horas solo con este método,

14
00:00:45,930 --> 00:00:49,590
pero solo les mostraré uno de los casos de uso más comunes,

15
00:00:49,590 --> 00:00:52,380
que es sumar números

16
00:00:52,380 --> 00:00:55,560
o, básicamente, realizar cualquier operación,

17
00:00:55,560 --> 00:00:58,530
u operaciones matemáticas, con números.

18
00:00:58,530 --> 00:01:00,390
Entonces, digamos que, por alguna razón,

19
00:01:00,390 --> 00:01:03,990
queríamos leer todos los libros de la serie

20
00:01:03,990 --> 00:01:08,490
y queríamos saber cuántas páginas tendríamos que leer.

21
00:01:08,490 --> 00:01:11,470
Entonces la solución es sumar

22
00:01:12,630 --> 00:01:14,820
todas las propiedades de estas páginas

23
00:01:14,820 --> 00:01:18,360
de todos los libros de la serie, ¿verdad?

24
00:01:18,360 --> 00:01:21,693
Y para eso podemos usar el método de reducción.

25
00:01:23,010 --> 00:01:25,380
Entonces, digamos páginasTodos los libros,

26
00:01:29,104 --> 00:01:30,937
y luego libros.reducir.

27
00:01:33,600 --> 00:01:36,840
Ahora, el método reduce también incluye una función de devolución de llamada.

28
00:01:36,840 --> 00:01:39,960
que se ejecutará para cada elemento de la matriz.

29
00:01:39,960 --> 00:01:41,790
Y, como segundo argumento,

30
00:01:41,790 --> 00:01:46,140
también toma un valor inicial, básicamente.

31
00:01:46,140 --> 00:01:47,790
Pero antes de entrar en esto,

32
00:01:47,790 --> 00:01:51,300
En realidad, comprendamos qué hace el método de reducción.

33
00:01:51,300 --> 00:01:53,490
y para qué se utiliza.

34
00:01:53,490 --> 00:01:55,860
Entonces se llama método de reducción.

35
00:01:55,860 --> 00:02:00,660
porque el objetivo de reducir es reducir, básicamente,

36
00:02:00,660 --> 00:02:03,510
toda la matriz a un solo valor.

37
00:02:03,510 --> 00:02:06,480
Entonces, para resumirlo, y si lo piensas bien,

38
00:02:06,480 --> 00:02:09,990
Esto es exactamente lo que estamos tratando de hacer ahora.

39
00:02:09,990 --> 00:02:13,530
Entonces, queremos reducir toda la matriz

40
00:02:13,530 --> 00:02:16,500
a un solo número, que es, en este caso,

41
00:02:16,500 --> 00:02:20,880
el número de páginas de todos los libros combinados, ¿verdad?

42
00:02:20,880 --> 00:02:23,790
Y entonces, ese segundo argumento que mencioné antes,

43
00:02:23,790 --> 00:02:26,010
es, básicamente, el valor inicial

44
00:02:26,010 --> 00:02:29,610
para ese valor final que queremos obtener.

45
00:02:29,610 --> 00:02:32,580
Primero, queremos pasar una función.

46
00:02:32,580 --> 00:02:34,159
Lo haremos en un minuto.

47
00:02:34,159 --> 00:02:36,840
Y segundo, queremos ese valor inicial.

48
00:02:36,840 --> 00:02:39,180
Y en este caso, ya que estamos sumando

49
00:02:39,180 --> 00:02:42,720
Para todos estos valores, comenzaremos desde cero, por supuesto.

50
00:02:42,720 --> 00:02:44,973
Tiene sentido, ¿verdad?

51
00:02:46,560 --> 00:02:48,990
Y ahora, aquí, hablemos de la función.

52
00:02:48,990 --> 00:02:51,210
eso será llamado.

53
00:02:51,210 --> 00:02:56,210
Entonces, antes siempre teníamos esta función de devolución de llamada con un libro.

54
00:02:56,850 --> 00:02:59,460
y luego aquí hicimos algo, ¿no?

55
00:02:59,460 --> 00:03:00,900
Pero aquí, la función de devolución de llamada.

56
00:03:00,900 --> 00:03:02,970
será un poco diferente.

57
00:03:02,970 --> 00:03:04,830
Entonces, la función que pasamos aquí,

58
00:03:04,830 --> 00:03:08,130
no sólo quedará atrapado con el elemento actual

59
00:03:08,130 --> 00:03:11,760
pero también con el valor actual del acumulador.

60
00:03:11,760 --> 00:03:14,280
que comienza en cero.

61
00:03:14,280 --> 00:03:16,590
Todo eso suena muy confuso.

62
00:03:16,590 --> 00:03:20,043
pero déjame llamar a esto, aquí,

63
00:03:20,043 --> 00:03:22,200
acc, que significa acumulador,

64
00:03:22,200 --> 00:03:25,920
y luego veremos, en un segundo, por qué esto tiene sentido.

65
00:03:25,920 --> 00:03:30,000
Así que aquí lo que queremos devolver es este acumulador.

66
00:03:30,000 --> 00:03:34,323
más páginas de libros.

67
00:03:35,370 --> 00:03:37,310
Y ahora, si decimos páginas o libros,

68
00:03:37,310 --> 00:03:39,633
entonces obtenemos este enorme número.

69
00:03:40,710 --> 00:03:43,500
Bien, entonces entendamos qué pasó aquí,

70
00:03:43,500 --> 00:03:46,980
repasando esta matriz, elemento por elemento.

71
00:03:46,980 --> 00:03:48,840
Entonces, el primer elemento, nuevamente aquí,

72
00:03:48,840 --> 00:03:50,370
es "El Señor de los Anillos".

73
00:03:50,370 --> 00:03:52,350
Y así, en esta primera iteración,

74
00:03:52,350 --> 00:03:55,020
este libro, aquí, es, por supuesto, este,

75
00:03:55,020 --> 00:03:57,120
pero ¿cuál es el acumulador?

76
00:03:57,120 --> 00:03:59,370
Bueno, el acumulador es, básicamente,

77
00:03:59,370 --> 00:04:02,640
el valor actual del valor final

78
00:04:02,640 --> 00:04:06,540
al que queremos reducir la matriz.

79
00:04:06,540 --> 00:04:08,550
Entonces, básicamente, en este caso,

80
00:04:08,550 --> 00:04:13,140
las páginas de todos los libros combinados, que comienza en cero.

81
00:04:13,140 --> 00:04:14,730
Y así, en la primera iteración

82
00:04:14,730 --> 00:04:17,550
el acumulador seguirá siendo cero.

83
00:04:17,550 --> 00:04:19,770
Entonces, esta función, aquí, será llamada

84
00:04:19,770 --> 00:04:24,360
para el primer elemento y luego el acumulador será cero

85
00:04:24,360 --> 00:04:26,430
y el libro será el libro actual.

86
00:04:26,430 --> 00:04:29,580
Y entonces sumamos el acumulador actual,

87
00:04:29,580 --> 00:04:33,270
entonces las páginas o libros actuales, por así decirlo,

88
00:04:33,270 --> 00:04:38,070
que sigue siendo cero más estos 1.216.

89
00:04:38,070 --> 00:04:40,890
Y entonces, podemos imaginar que el segundo valor, aquí,

90
00:04:40,890 --> 00:04:45,890
luego se convierte en 1216 después de esta primera iteración.

91
00:04:45,930 --> 00:04:48,360
Y así, por lo tanto, en la siguiente iteración,

92
00:04:48,360 --> 00:04:50,790
cuando vamos al segundo objeto,

93
00:04:50,790 --> 00:04:54,423
el acumulador actual ya es de 1.216.

94
00:04:56,040 --> 00:04:58,860
Así que aquí, nuevamente, en la segunda iteración,

95
00:04:58,860 --> 00:05:00,930
ser ya 1.216.

96
00:05:00,930 --> 00:05:04,770
Y luego, encima de eso, sumamos 295.

97
00:05:04,770 --> 00:05:07,200
Entonces, esas son las páginas del libro actual.

98
00:05:07,200 --> 00:05:09,780
Y así, entonces, en la siguiente iteración

99
00:05:09,780 --> 00:05:14,700
el acumulador ya será 1.216 más 295

100
00:05:14,700 --> 00:05:16,890
que son como 1.500 y pico.

101
00:05:16,890 --> 00:05:20,520
Y luego, además de eso, agregamos este número de páginas,

102
00:05:20,520 --> 00:05:23,760
y así sigue, hasta el final.

103
00:05:23,760 --> 00:05:26,940
Entonces, podemos imaginar este acumulador aquí, básicamente,

104
00:05:26,940 --> 00:05:30,630
como un montón, sobre el que ponemos cada vez más y más,

105
00:05:30,630 --> 00:05:33,180
hasta que al final lleguemos al resultado final

106
00:05:33,180 --> 00:05:34,680
que estábamos buscando.

107
00:05:34,680 --> 00:05:37,050
Entonces, es como un valor intermediario,

108
00:05:37,050 --> 00:05:41,040
en este caso, al que seguimos sumando el número de páginas

109
00:05:41,040 --> 00:05:45,573
hasta que, al final, llegamos a las 3.227 páginas.

110
00:05:46,800 --> 00:05:51,510
Bien, eso fue un poco confuso, una vez más,

111
00:05:51,510 --> 00:05:53,910
pero tampoco es muy importante

112
00:05:53,910 --> 00:05:55,860
para entender cómo funciona,

113
00:05:55,860 --> 00:05:58,170
especialmente si todo lo que estamos haciendo

114
00:05:58,170 --> 00:06:01,890
es como esta simple suma de números.

115
00:06:01,890 --> 00:06:04,320
Entonces, esto siempre funciona igual al final.

116
00:06:04,320 --> 00:06:07,440
Y entonces, sí, el caso de uso más importante, por lo general,

117
00:06:07,440 --> 00:06:09,900
de reducir es solo esto.

118
00:06:09,900 --> 00:06:13,290
Pero también podemos hacer cosas muy, muy complejas,

119
00:06:13,290 --> 00:06:14,730
como dije al principio

120
00:06:14,730 --> 00:06:16,740
porque este valor inicial, aquí,

121
00:06:16,740 --> 00:06:19,140
no tiene que ser un número.

122
00:06:19,140 --> 00:06:22,530
También podría ser una matriz o un objeto.

123
00:06:22,530 --> 00:06:24,360
Y entonces, ¿qué significa esto?

124
00:06:24,360 --> 00:06:26,040
es que podríamos hacer, de verdad,

125
00:06:26,040 --> 00:06:28,500
cualquier cosa que hagamos con mapa o filtro

126
00:06:28,500 --> 00:06:31,230
también con una reducción.

127
00:06:31,230 --> 00:06:35,029
Pero no entraré en eso ahora mismo, porque, sí,

128
00:06:35,029 --> 00:06:38,310
(risas) para eso ya tenemos mapa y filtro.

129
00:06:38,310 --> 00:06:40,890
Ahora, aquí, simplemente me gusta, en este caso,

130
00:06:40,890 --> 00:06:43,893
para reemplazar el valor del acumulador con la suma,

131
00:06:45,690 --> 00:06:46,980
así que llamándolo simplemente suma,

132
00:06:46,980 --> 00:06:50,010
porque eso es lo que realmente está haciendo.

133
00:06:50,010 --> 00:06:51,930
Pero ten en cuenta que,

134
00:06:51,930 --> 00:06:53,730
bueno es un acumulador

135
00:06:53,730 --> 00:06:56,850
porque seguimos sumando y subiendo y subiendo

136
00:06:56,850 --> 00:06:59,850
sobre este valor temporal, por así decirlo.

137
00:06:59,850 --> 00:07:02,130
En este caso, es simplemente la suma de las páginas.

138
00:07:02,130 --> 00:07:05,403
Y aquí me gusta llamarlo suma.

139
00:07:06,810 --> 00:07:09,930
Bien, y eso es, en realidad, todo lo que tenía que mostrarles, aquí,

140
00:07:09,930 --> 00:07:11,250
sobre reducir,

141
00:07:11,250 --> 00:07:13,680
porque sí, muchas veces simplemente lo usamos

142
00:07:13,680 --> 00:07:15,720
para cosas simples como esta.

143
00:07:15,720 --> 00:07:18,123
Y ahora ya sabes cómo hacerlo.