首页 > 解决方案 > 在过滤掉特定键的同时比较两个对象

问题描述

我试图找出最好的方法来做到这一点。假设我有两个对象

const baseObject = {
   firstName: "John",
   lastName: "Doe",
   dob: "01/01/00",
   siblings: []
}

const updatedObject = {
   firstName: "Johnathan",
   lastName: "Doe",
   dob: "01/01/00",
   siblings: []
}

我想将 mybaseObject与 my进行比较,updatedObject同时忽略dob & siblings发现另一个 obj 中的任何差异和变化。

我一直在努力如何做到这一点。我玩过 .filter、.map 等,但没有建立任何基础。

注意:是的 [] 确实很重要。

谢谢你的帮助。

标签: javascriptobjectecmascript-6

解决方案


我宁愿不单独比较每个对象键值,因为最终,我希望我的对象会增长

如果您这么认为,在 javascript 对象中查找差异并不容易。没有魔法功能(我已经搜索了很多)可以为你做这件事。这就是为什么您必须遍历键并手动制作所有内容的原因。

例子:

const changes = Object.keys(baseObject)
.filter(key => !['dob', 'siblings'].includes(key))
.map(key => (
  {
    property: key, 
    oldVal: baseObject[key], 
    newVal: updatedObject[key],
    wasUpdated: baseObject[key] === updatedObject[key]
  }
 ))

PS你没有提供结果应该是什么样子,所以我在不知情的情况下编写了代码。


推荐阅读