-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcheckpoint.js
263 lines (211 loc) · 7.79 KB
/
checkpoint.js
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
// Importante: No modificar ni el nombre ni los argumetos que reciben las funciones, sólo deben escribir
// código dentro de las funciones ya definidas.
function menorMayor(numeros) {
// La función llamada 'menorMayor' recibe como argumento un arreglo de números llamado 'numeros' y debe devolver un
// arreglo que contenga el menor número del arreglo 'numeros' en la posición cero y el mayor número del arreglo
// 'numeros' en la posición 1.
// Ej:
// menorMayor([4, 6, 1, 7, 15]) debe retornar [1, 15]
// ya que 1 es el número más chico (menor) dentro del arreglo [4, 6, 1, 7, 15]
// y 15 es el número más grande (mayor) dentro del arreglo [4, 6, 1, 7, 15]
// Tu código aca:
let newArray = [];
let numMenor = numeros[0]
let numMayor = numeros[0]
for(let i = 0; i < numeros.length; i++){
if(numMenor > numeros[i]){
numMenor = numeros[i];
}
if(numMayor < numeros[i]){
numMayor = numeros[i];
}
}
newArray.push(numMenor);
newArray.push(numMayor);
return newArray;
}
function stringMasLarga(strings) {
// La función llamada 'stringMasLarga', recibe como argumento un arreglo de strings llamado 'strings'
// y debe devolver el string más largo que hay en el arreglo (Es decir el de mayor cantidad de caracteres)
// Ej:
// stringMasLarga(['hi', 'hello', 'ni hao', 'guten tag']); debe retornar 'guten tag'
// stringMasLarga(['JavaScript', 'HTML', 'CSS']); debe retornar 'JavaScript'
// Tu código aca
let palabraMasLarga = strings[0];
for(let i = 0; i < strings.length; i++){
if(palabraMasLarga.length < strings[i].length){
palabraMasLarga = strings[i]
}
}
return palabraMasLarga;
}
function buscarAmigo(amigos, nombre) {
// La funcion llamada 'buscarAmigo' recibe como argumento un array llamado 'amigos' que contiene
// en cada posición del arreglo un objeto que tiene como propiedades 'nombre' y 'edad'. También
// recibe un string llamado 'nombre'.
// Debe devolver el objeto cuya propiedad 'nombre' coincida con el string 'nombre' recibido por argumento.
// Ej:
// var amigos = [{ nombre: 'toni', edad: 33 } , { nombre: 'Emi', edad: 25 }];
// buscarAmigo(amigos, 'toni') debe devolver { nombre: 'toni', edad: 33 };
// Tu código aca:
for(let i = 0; i < amigos.length; i++){
if(amigos[i].nombre === nombre){
return amigos[i]
}
}
}
function sumArray(array, n) {
// La función llamada 'sumArray' recibe como argumento un arreglo de números ordenados llamado 'array' y un número
// entero llamdo 'n' y debe devolver true si alguna combinación de dos números cualesquiera del arreglo sumados
// dan n, y devuelva false si ninguna combinación de dos números sumados da como resultado el número n.
// Ej:
// sumArray([2,5,7,10,11,15,20], 13) debería devolver true ya que 2 + 11 = 13
// sumArray([2,5,7,10,11,15,20], 14) debería devolver false ya que no es posible sumar 14 con dos números del arreglo
// Pista: Podes usar bucles/ciclos anidados
// Aclaración: No es válido sumar el mismo número dos veces
// Ej:
// sumArray([2,5,7,2,11,15,20], 4) Si bien 2 + 2 = 4 no está permitido sumar el mismo número dos veces
// por lo tanto también debería devolver false en este caso
// Tu código aca:
for(let i = 0; i < array.length; i++){
for(let j = i+1; j < array.length; j++){
if((array[j] + array[i]) === n){
return true
}
}
}
return false
};
function pluck(array, propiedad) {
// La función llamada 'pluck' recibe como argumento un array de objetos llamado 'array' y el nombre de una
// propiedad.
// La función debe devolver un nuevo arreglo con solo los valores dentro de la propiedad recibida
// Ej:
// var productos = [{ name: 'TV LCD', price: 100}, { name: 'Computadora', price: 500 }]
// productos.pluck(productos, 'name') debería devolver ['TV LCD', 'Computadora']
// Pista: es una buena oportunidad para usar map.
// Tu código acá:
let newArray = [];
array.map(function(productos){
newArray.push(productos[propiedad])
})
return newArray
}
// =======================================================================
function crearClasePersona() {
class Persona {
constructor(nombre, edad, hobbies, amigos) {
// El constructor de la clase Persona recibe nombre (string), edad (integer), hobbies (array de strings), amigos (array de objetos)
// Inicializar las propiedades de la persona con los valores recibidos como argumento
// Tu código aca:
this.nombre = nombre,
this.edad = edad,
this.hobbies = hobbies,
this.amigos = amigos
}
addFriend(nombre, edad) {
// El método 'addFriend' recibe un string 'nombre' y un entero 'edad' y debe agregar un objeto:
// { nombre: nombre, edad: edad} al arreglo de amigos de la persona.
// No debe retornar nada.
// Tu código aca:
let obj = {
nombre:nombre,
edad:edad
}
this.amigos.push(obj)
}
addHobby(hobby) {
// El método 'addHobby' recibe un string 'hobby' y debe agregarlo al arreglo de hobbies de la persona.
// No debe retornar nada.
// Tu código aca:
this.hobbies.push(hobby)
}
getFriends() {
// El método 'getFriends' debe retornar un arreglo con sólo los nombres del arreglo de amigos
// de la persona.
// Ej:
// Suponiendo que la persona tiene estos amigos: [{nombre: 'martin', edad: 31},{nombre: 'toni', edad: 33}]
// persona.getFriends() debería devolver ['martin', 'toni']
// Tu código aca:
let newArray = []
this.amigos.forEach(element => {
newArray.push(element.nombre)
});
return newArray
}
getHobbies() {
// El método 'getHobbies' debe retornar un arreglo con los hobbies de la persona
// Ej:
// persona.getHobbies() debe devolver ['correr', 'dormir', 'nadar']
// Tu código aca:
return this.hobbies
}
getPromedioEdad() {
// El método 'getPromedioEdad' debe retornar el promedio de edad de los amigos de una persona
// Ej:
// Si la persona tuviera estos amigos:
// {
// amigos: [{
// nombre: 'toni',
// edad: 33,
// }, {
// nombre: 'Emi',
// edad: 25
// }]
// }
// persona.getPromedioEdad() debería devolver 29 ya que (33 + 25) / 2 = 29
// Tu código aca:
let valor1 = 0
let valor2;
for(let i = 0; i < this.amigos.length; i++){
valor1 = valor1 + this.amigos[i]["edad"];
valor2 = valor1 / this.amigos.length
}
return valor2
}
};
return Persona;
}
/* ====================== EXTRA CREDIT ===================== */
// Este ejercicio no cuenta en el puntaje del checkpoint
// pero si llegas hasta aca y lo haces quiere decir que venis super bien!
function filtrar(funcion) {
// Escribi una función filtrar en el prototipo de Arrays,
// que recibe una funcion (callback) que devuelve true o false.
// filtrar los elementos de ese arreglo en base al resultado de esa funcion
// comparadora, devolver un nuevo arreglo con los elementos filtrados.
// NO USAR LA FUNCION FILTER DE LOS ARREGLOS.
// ej:
// var productos = [{
// price: 100,
// name: 'tv'
// }, {
// price: 50,
// name: 'phone'
// }, {
// price: 30,
// name: 'lamp'
// }]
// productos.filtrar(function(p) {
// return p.price >= 50;
// }) => [{price: 100, name:'tv'}]
Array.prototype.filtrar = function (cb) {
let newArray = [];
for (let i = 0; i < this.length; i++) {
const x = cb(this[i]);
if (x) newArray.push(this[i]);
}
return newArray;
}
};
// No modifiques nada debajo de esta linea
//
module.exports = {
sumArray,
menorMayor,
stringMasLarga,
buscarAmigo,
pluck,
crearClasePersona,
filtrar
}