
1条回答 默认 最新
大家好我是阔阔 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子属性的值不同,因此差异对象中记录了这些差异。解决 无用评论 打赏 举报