Выборка с 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;

→ Ссылка