我正在尝试找出是否有任何es6(或外部库)方法来处理JavaScript中的深层对象比较和解析。
以下面的示例为例,其中我有一个属性history
,它是一个数组,嵌入在属性services
中,该属性也是一个数组:
{
_id: 4d39fe8b23dac43194a7f571,
name: {
first: "Jane",
last: "Smith"
}
services: [
{
service: "typeOne",
history: [
{ _id: 121,
completed: true,
title: "rookie"
},
{ _id: 122,
completed: false,
title: "novice"
}
]
},
{
service: "typeTwo",
history: [
{ _id: 135,
completed: true,
title: "rookie"
},
{ _id: 136,
completed: false,
title: "novice"
}
]
}
]
}
现在,说一个新元素被推到第二个“服务”元素内的“历史”数组上,其中(服务:“ typeTwo”)-在“服务”数组上。我需要确定发生了这种情况,并拉出整个父元素,因为我还需要知道“服务”数组中的哪些“服务”添加了新的“历史”元素。
有没有一种方法可以扫描整个对象,不仅可以确定何时进行了更改,而且还可以提取我需要参考的部分?我可以在此处使用本机JS或JS库选项。
答案 0 :(得分:0)
您可以像这样检查重复项:
function isEqual(firstObject, secondObject) {
function _equals(firstObject, secondObject) {
let clone = {...{}, ...firstObject}, cloneStr = JSON.stringify(clone);
return cloneStr === JSON.stringify({...clone, ...secondObject});
}
return _equals(firstObject, secondObject) && _equals(secondObject, firstObject);
}
答案 1 :(得分:0)