跳到主要内容

对比对象

2024年04月09日
柏拉文
越努力,越幸运

一、认识


对比对象 就是将 newObjectoldObject 进行 diff, diff 过程如下:

  • 如果 newObject 中存在 oldObject 的属性

    • 如果属性值相同,则复用旧属性

    • 如果属性值不相同,那么进行更新操作,

  • 如果 newObject 中没有 oldObject ,则进行删除操作

一、for oldObject、for newObject


const oldObject = {
a: 1,
b: 2,
c: 3,
};

const newObject = {
a: 11,
d: 12,
};

const object = oldObject;
console.log(object);

function patchObject(oldObject, newObject) {
if (oldObject != null && Object.keys(oldObject).length) {
for (const key in oldObject) {
if (!(key in newObject)) {
delete object[key];
}
}
}
if (newObject != null && Object.keys(newObject).length) {
for (const key in newObject) {
if (newObject[key] !== oldObject[key]) {
object[key] = newObject[key];
}
}
}
}

patchObject(oldObject, newObject);
console.log(object);