1条回答 默认 最新
- KUOKUO众享 2023-04-25 13:47关注
久远的问题,贴一下 chatgpt 给出的答案:
可以使用 JSON.stringify() 方法将两个 JSON 对象转换为字符串,再使用 JSON.parse() 方法将字符串转回为对象,然后比较各个属性的值,得出差异。以下是一个简单的实现:function diffJSON(json1, json2) { let diff = {}; let keys = Object.keys(json1).concat(Object.keys(json2)); keys = Array.from(new Set(keys)); for (let key of keys) { if (json1[key] !== json2[key]) { if (typeof json1[key] !== \object\ || typeof json2[key] !== \object\ { diff[key] = [json1[key], json2[key]]; } else { diff[key] = diffJSON(json1[key], json2[key]); } } } return diff; }
这个函数会返回两个 JSON 对象的差异,以一个新的 JSON 对象的形式表示。如果两个对象相同,返回的对象将为空对象
{}
。示例用法:
const obj1 = { a: 1, b: 2, c: { d: 3, e: 4 } }; const obj = { a: 2, b: 2, c: { d: 3, e: 5 } }; const diff = diffJSON(obj1, obj2); console.log); // 输出 { a: [1, 2], c: { e: [4, 5] } }
上面的例子中,两个 JSON 对象的
a
属性的值不同,c
属性的e
子属性的值不同,因此差异对象中记录了这些差异。解决 无用评论 打赏 举报
悬赏问题
- ¥15 请完成下列相关问题!
- ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
- ¥15 求daily translation(DT)偏差订正方法的代码
- ¥15 js调用html页面需要隐藏某个按钮
- ¥15 ads仿真结果在圆图上是怎么读数的
- ¥20 Cotex M3的调试和程序执行方式是什么样的?
- ¥20 java项目连接sqlserver时报ssl相关错误
- ¥15 一道python难题3
- ¥15 牛顿斯科特系数表表示
- ¥15 arduino 步进电机