javascript - 在过滤掉特定键的同时比较两个对象
问题描述
我试图找出最好的方法来做到这一点。假设我有两个对象
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 等,但没有建立任何基础。
注意:是的 [] 确实很重要。
谢谢你的帮助。
解决方案
我宁愿不单独比较每个对象键值,因为最终,我希望我的对象会增长
如果您这么认为,在 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你没有提供结果应该是什么样子,所以我在不知情的情况下编写了代码。
推荐阅读
- android - 如何在 Flutter 中使用 RSA 进行签名?
- python - scipy.optimize.curve_fit 返回巨大的标准差/协方差
- c# - 如何将子节点动态添加到 WPF TreeView?
- firefox - Firefox 66、67 在缓存中保存 302
- flutter - Column 的 MainAxisAlignment 嵌套在 Column->Row 中时不起作用
- spring-boot - 如何允许在 cassandra 中使用 java datastax 进行过滤
- java - Spring MyBatis 关系映射问题
- python - 将图像加载到 Dask Dataframe
- android - 将事件添加到三星日历
- azure - 远程调试在 Azure App Services For Containers 中运行的 .net 核心应用