-
Notifications
You must be signed in to change notification settings - Fork 35
/
131.js
39 lines (33 loc) · 1.27 KB
/
131.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
/*
Se tiene un objeto con nombres y cantidad de llamadas.
Devolver un objecto con la cantidad de llamadas acumuladas y por nombre.
* Input: [{name: "denu", numOfCalls: 7}, {name: "pedro", numOfCalls: 3}, {name: "denu", numOfCalls: 2}]
* Output: {denu: 9, pedro: 3}
*/
const calls = [
{name: "denu", numOfCalls: 6},
{name: "juan", numOfCalls: 4},
{name: "pedro", numOfCalls: 7},
{name: "denu", numOfCalls: 4},
{name: "laura", numOfCalls: 4},
{name: "pou", numOfCalls: 9},
{name: "leo", numOfCalls: 17},
]
const makeObject = (calls) => {
const totalCallsPerPerson = calls.reduce((callsByName, item) => {
const currentName = item.name;
// Si el objeto posee currentName como property, sumamos
if (callsByName.hasOwnProperty(currentName)) {
callsByName[currentName] = callsByName[currentName] + item.numOfCalls;
}
// Si no, agregamos
else {
callsByName[currentName] = item.numOfCalls;
}
// Devuelve el acumulador donde estoy haciendo el proceso, y lo asigno a totalCallsPerPerson
return callsByName;
}, {})
// devuelvo todo finalizado
return totalCallsPerPerson;
}
console.log(makeObject(calls)); // { denu: 10, juan: 4, pedro: 7, laura: 4, pou: 9, leo: 10 }