比较 2 个不同 JSON 对象的键并返回键及其不匹配的值

我有两个 json 对象。我也在他们身上使用了 json.stringfy。


Json1 和 json2 有特定的键。两个对象中很少有键相似,而其他键则不同。我不在乎两个对象的值是否不同。在检查 json2 中是否存在键后,我想返回 Json1 的不匹配键及其值。


前任:


Json1:{

"A":2,

"B": "jrrj"  }


Json2 : {

"A" : 6,

"C" : "jrdj" 

}

预期输出:


Result: {

"B" : "jrrj" 

}

我在 SO 上搜索了很多解决方案,但找不到一个完全相同的合适解决方案,而且我无法找出一个。


请帮帮我。


PS - 现在我使用的是 ES5 js 版本。


慕森王
浏览 315回答 2
2回答

至尊宝的传说

如果那是第二个对象缺少的平面对象和键,您可以:Object.keys()第一个对象的提取用于Array.prototype.reduce()遍历后者并将其转换为一个对象,其属性设置为第一个对象的唯一属性以下是一个快速演示:const o1 ={"A":2,"B":"jrrj"},      o2 ={"A":6,"C":"jrdj"},      diff = Object              .keys(o1)              .reduce((r,key) =>                 (!(key in o2) && (r[key] = o1[key]), r), {})       console.log(diff)ES5兼容版本const o1 ={"A":2,"B":"jrrj"},      o2 ={"A":6,"C":"jrdj"},      diff = Object        .keys(o1)        .reduce(function(r, key){          if(!(key in o2)) r[key] = o1[key]          return r        }, {})      console.log(diff)

温温酱

const object_1 = {"A":2,"B":"jrrj"};const object_2 = {"A":6,"C":"jrdj"};var new_obj = {};Object.keys(object_1).map(  function(obj_1_key){    if(!object_2[obj_1_key]){        new_obj[obj_1_key] = object_1[obj_1_key];    }  })console.log(new_obj);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript