Lodash 4:如何比较两个对象键和 return 差异?

Lodash 4: How to compare two object keys and return differences?

我有两个这样的对象:

originalObj:

{
    name: "Jane",
    fullName: "Jane Doe"
    nickname: "Janey"
    ...etc...
}

updatedObj:

{
    name: "Jane",
    fullName: "Jane Dawn", //<--this value changed
    nickname: "Janey"
    ...etc..
}

使用 lodash 4,我如何比较两个对象以及 return 更新后的值与键?

因此,例如,我希望看到:

{
    fullName: "Jane Dawn",
        ...etc...
}

我的用例是我想在提交给服务器之前向用户显示现有数据库数据和用户更新的表单数据的“之前”和“之后”视图。

如果是平面对象,即没有嵌套对象或数组,你可以在更新后的对象上使用_.pickBy(),取不等于相似属性的每一个属性来自原始对象:

const originalObj = {"name":"Jane","fullName":"Jane Doe","nickname":"Janey"}
const updatedObj = {"name":"Jane","fullName":"Jane Dawn","nickname":"Janey"}

const result = _.pickBy(updatedObj, (v, k) => !_.isEqual(originalObj[k], v))

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

如果需要比较嵌套对象,使用包,例如deep-object-diff .