Сравнить два объекта и вернуть значения которых нету в старом
Нужно сравнить два обьекта и вернуть новый с всеми значениями который были изменены.
На выходе с двух нужно вернуть только:
const objCompare = {
"companies": ['0', '1'],
"additionalCompanies": ['0', '1']
user: {
"lastName": "smithssі",
}
}
Так как эти данные есть в новом но нету в старом обьекте.
Пример обьектов и функции:
const objnew ={
"id": 11,
"createdAt": "2022-03-23T13:08:18.081Z",
"updatedAt": "2022-03-23T16:28:46.528Z",
"user": {
"id": 3,
"email": "[email protected]",
"role": "Employee",
"title": "someTItle",
"firstName": "johnsss",
"lastName": "smithssі",
"accountStatus": 3,
"createdAt": "2022-03-23T13:08:18.081Z",
"updatedAt": "2022-03-23T18:22:36.846Z",
"password": "sdfkkdSW1_"
},
"companies": ['0', '1'],
"additionalCompanies": ['0', '1']
}
const objOld = {
"id": 11,
"createdAt": "2022-03-23T13:08:18.081Z",
"updatedAt": "2022-03-23T16:28:46.528Z",
"user": {
"id": 3,
"email": "[email protected]",
"role": "Employee",
"title": "someTItle",
"firstName": "johns",
"lastName": "smithss",
"accountStatus": 3,
"createdAt": "2022-03-23T13:08:18.081Z",
"updatedAt": "2022-03-23T18:22:36.846Z"
},
"companies": [],
"additionalCompanies": []
}
const compareObject = (newObj, oldObj) => {
if (Object.keys(oldObj).length == 0 && Object.keys(newObj).length > 0)
return newObj;
const diff = {};
for (const key in oldObj) {
if (newObj[key] && oldObj[key] != newObj[key]) {
diff[key] = newObj[key];
}
}
if (Object.keys(diff).length > 0) return diff;
return oldObj;
};
console.log(compareObject(objnew, objOld) )