-
Notifications
You must be signed in to change notification settings - Fork 1
/
lodash.js
49 lines (38 loc) · 993 Bytes
/
lodash.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
const newUsers = [{
"id": 4,
"name": "Ihorko",
"email": "newemail@hp.com",
"gender": "Male",
"birthday": "1993-09-29"
}, {
"id": 6,
"name": "Valera",
"email": "valera@mapquest.com",
"gender": "Male",
"birthday": "1999-06-17"
}];
function mergeUsers(users, newUsers) {
newUsers.forEach((newUser) => {
const userIndex = users.findIndex((user) => user.id === newUser.id);
if (userIndex !== -1) {
users[userIndex] = newUser;
} else {
users.push(newUser);
}
});
return users;
}
function mergeUsersImproved(users, newUsers) {
const usersObj = {};
users.forEach((user) => {
usersObj[user.id] = user;
})
newUsers.forEach((item) => {
usersObj[item.id] = item;
})
return Object.values(usersObj);
}
function mergeUsersLodash(users, newUsers) {
return _.values(_.assign(_.keyBy(users, 'id'), _.keyBy(newUsers, 'id')));
}
console.log( mergeUsersLodash(users, newUsers) );