-
Notifications
You must be signed in to change notification settings - Fork 20
Expand file tree
/
Copy pathchallenge.js
More file actions
137 lines (128 loc) · 3.85 KB
/
challenge.js
File metadata and controls
137 lines (128 loc) · 3.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/**
* Reto: find, filter y reduce
*
* En este reto practicarás los tres métodos de orden superior más importantes
* para trabajar con arreglos: find, filter y reduce.
*
* Conceptos clave:
* - find: retorna el PRIMER elemento que cumple la condición (o undefined)
* - filter: retorna TODOS los elementos que cumplen la condición (array vacío si no hay)
* - reduce: acumula un resultado final recorriendo todo el array
*/
/**
* Ejercicio 1: buscarNotaPorId
*
* Usa find para retornar la nota que tenga el id especificado.
* Si no existe, retorna undefined.
*
* @param {Array} notas - Arreglo de objetos nota con propiedades: id, title, content, category
* @param {number} id - El id a buscar
* @returns {Object|undefined} La nota encontrada o undefined
*/
function buscarNotaPorId(notas, id) {
// Tu código aquí
}
/**
* Ejercicio 2: buscarNotaPorTituloExacto
*
* Usa find para retornar la nota cuyo título coincida exactamente (===)
* con el título buscado. La comparación debe ser sensible a mayúsculas/minúsculas.
*
* @param {Array} notas - Arreglo de notas
* @param {string} titulo - El título exacto a buscar
* @returns {Object|undefined} La nota encontrada o undefined
*/
function buscarNotaPorTituloExacto(notas, titulo) {
// Tu código aquí
}
/**
* Ejercicio 3: filtrarNotasPorCategoria
*
* Usa filter para retornar todas las notas que pertenezcan
* a la categoría especificada.
*
* @param {Array} notas - Arreglo de notas
* @param {string} categoria - La categoría a filtrar
* @returns {Array} Arreglo con las notas de esa categoría (vacío si no hay)
*/
function filtrarNotasPorCategoria(notas, categoria) {
// Tu código aquí
}
/**
* Ejercicio 4: filtrarNotasPorLongitudMinima
*
* Usa filter para retornar todas las notas cuyo content tenga
* una longitud mayor o igual a la especificada.
*
* @param {Array} notas - Arreglo de notas
* @param {number} longitudMinima - Cantidad mínima de caracteres
* @returns {Array} Notas que cumplan la condición
*/
function filtrarNotasPorLongitudMinima(notas, longitudMinima) {
// Tu código aquí
}
/**
* Ejercicio 5: sumarIds
*
* Usa reduce para sumar todos los id de las notas.
* El valor inicial del acumulador debe ser 0.
*
* @param {Array} notas - Arreglo de notas
* @returns {number} La suma de todos los ids
*/
function sumarIds(notas) {
// Tu código aquí
}
/**
* Ejercicio 6: concatenarTitulos
*
* Usa reduce para concatenar todos los títulos de las notas
* separados por un guión (-). El valor inicial debe ser string vacío "".
*
* Ejemplo: [{title: "A"}, {title: "B"}] → "A-B"
*
* @param {Array} notas - Arreglo de notas
* @returns {string} String con los títulos concatenados
*/
function concatenarTitulos(notas) {
// Tu código aquí
}
/**
* Ejercicio 7: contarNotasPorCategoria (Reto avanzado)
*
* Usa reduce para contar cuántas notas existen por cada categoría.
* El acumulador debe ser un objeto vacío {}.
*
* Ejemplo de resultado: { trabajo: 2, personal: 1, estudio: 3 }
*
* Tip: En cada iteración, usa la categoría de la nota como clave del objeto.
* Si la clave no existe, inicialízala en 0, luego incrementa.
*
* @param {Array} notas - Arreglo de notas
* @returns {Object} Objeto con categorías como claves y conteos como valores
*/
function contarNotasPorCategoria(notas) {
// Tu código aquí
}
/**
* Ejercicio 8: calcularPromedioDeIds
*
* Usa reduce para calcular el promedio de todos los ids.
* Primero suma todos los ids, luego divide por la cantidad de notas.
*
* @param {Array} notas - Arreglo de notas
* @returns {number} El promedio de los ids
*/
function calcularPromedioDeIds(notas) {
// Tu código aquí
}
module.exports = {
buscarNotaPorId,
buscarNotaPorTituloExacto,
filtrarNotasPorCategoria,
filtrarNotasPorLongitudMinima,
sumarIds,
concatenarTitulos,
contarNotasPorCategoria,
calcularPromedioDeIds,
};