为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕森王 2022-12-09 17:17:35
我有两个 json 对象。我也在他们身上使用了 json.stringfy。Json1 和 json2 有特定的键。两个对象中很少有键相似,而其他键则不同。我不在乎两个对象的值是否不同。在检查 json2 中是否存在键后,我想返回 Json1 的不匹配键及其值。前任:Json1:{"A":2,"B": "jrrj"  }Json2 : {"A" : 6,"C" : "jrdj" }预期输出:Result: {"B" : "jrrj" }我在 SO 上搜索了很多解决方案,但找不到一个完全相同的合适解决方案,而且我无法找出一个。请帮帮我。PS - 现在我使用的是 ES5 js 版本。
查看完整描述

2 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

如果那是第二个对象缺少的平面对象和键,您可以:

  • 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)


查看完整回答
反对 回复 2022-12-09
?
温温酱

TA贡献1752条经验 获得超4个赞

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);


查看完整回答
反对 回复 2022-12-09
  • 2 回答
  • 0 关注
  • 178 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号