我做了一些工作来做一个深入的比较(通过下划线和
diff
)在两个对象之间(实际上是同一文档的预保存和后保存版本),以便隔离保存后不同的部分。以该文档结构为例:
{
_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"
}
]
}
]
}
如果将新元素添加到
history
数组,我可以成功地解析出这个更改。
但是,除了拉出这个更改的部分,我还希望能够有效地从
历史
为了找到
service
因为我还需要知道这两者中的哪一个
services
数组元素实际已更改。有没有一种方法可以使用本机ES6 JavaScript来实现这一点?
如果没有,我是否可以使用库来确定这一点?现在我可以通过索引获得“服务”的值:
if (diff.path[1] === 0) {
targetService = "typeOne";
} else if (diff.path[1] === 1) {
targetService = "typeTwo";
} else if (diff.path[1] === 2) {
targetService = "typeThree";
}
但据我所知,这并不是充分的证据,因为无法保证“服务”中的元素顺序在某个时刻是不会改变的。如果我可以在
服务
数组。我只是不确定是否有办法做到这一点(如果可能的话,向建议敞开心扉)。