Выборка с 2х колекций
Помогите разобраться что не так? Нужно что бы в deletedUsers, были удаленные юзеры, то есть те которых нет в newUserList, а в newUsers соответственно , которых нет в oldUserList
const oldUserList = {
0: {id: 1, name: 'afs', age: 2},
1: {id: 2, name: 'asf', age: 3},
2: {id: 3, name: 'asfas', age: 2}
};
const newUserList = {
0: {id: 2, name: 'asf', age: 3},
1: {id: 3, name: 'asfas', age: 2},
2: {id: 4, name: 'sdgfs', age: 3}
};
let deletedUsers = Object.values(oldUserList).filter(x => !newUserList[x.id]);// not in new users => deleted;
let newUsers = Object.values(newUserList).filter(user => !oldUserList[user.id]);//not in old users => new user added;
/*expected result:
deletedUsers = { 0: {id: 1, name: 'afs', age: 2} };
newUsers = { 0: {id: 4, name: 'sdgfs', age: 3} }*
result:
deletedUsers = [ { id: 1, name: 'afs', age: 2 }, { id: 2, name: 'asf', age: 3 } ]
newUsers = [ { id: 3, name: 'asfas', age: 2 }, { id: 4, name: 'sdgfs', age: 3 } ]
*/
Ответы (1 шт):
Автор решения: Rostyslav Kuzmovych
→ Ссылка
const oldUserList = {
0: {id: 1, name: 'afs', age: 2},
1: {id: 2, name: 'asf', age: 3},
2: {id: 3, name: 'asfas', age: 2}
},
oldUserListValues = Object.values(oldUserList)
const newUserList = {
0: {id: 2, name: 'asf', age: 3},
1: {id: 3, name: 'asfas', age: 2},
2: {id: 4, name: 'sdgfs', age: 3}
},
newUserListValues = Object.values(newUserList)
let deletedUsers = Object.values(oldUserList).filter(x => !newUserListValues.find(a=>a.id === x.id));
console.log('deletedUsers:\n', deletedUsers)
// not in new users => deleted;
let newUsers = Object.values(newUserList).filter(x => !oldUserListValues.find(a=>a.id === x.id));
console.log('newUsers:\n', newUsers)
//not in old users => new user added;