首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较2个Java脚本对象以找出差异

比较2个Java脚本对象以找出差异
EN

Stack Overflow用户
提问于 2020-05-27 01:52:52
回答 4查看 72关注 0票数 1

我对java脚本有一定的了解,我正在尝试比较两个java脚本对象,以找出它们之间的区别。下面是我在函数中使用的代码,没有得到所需的输出。

代码语言:javascript
复制
function compoare() {
  var Json1 = [
    { name: "ABC", value: "5" },
    { name: "DEF", value: "85712264" },
  ];
  var Json2 = [
    { name: "DEF", value: "85712264" },
    { name: "ABC", value: "3" },
  ];

  var obj1Keys = Object.keys(Json1);
  var obj1Values = Object.values(Json1);
  var obj2Keys = Object.keys(Json2);
  var obj2Values = Object.values(Json2);
  console.log(obj1Keys);
  console.log(obj1Values);

  for (let i = 0; i < obj1Keys.length; i++) {
    for (let j = 0; j < obj2Keys.length; j++) {
      if (obj1Keys[i] === obj2Keys[j]) {
        if (obj1Values[i] !== obj2Values[j]) {
          console.log(obj1Keys[i]);
          console.log(obj1Values[i]);
        }
      }
    }
  }
}

我想比较一下Json1中的'name‘和'value’,并签入Json2。如果找到匹配的“名称”,则将“值”与相应的“名称”进行比较。如果“值”有差异,则从Json1中打印“name”和“value”对。

预期O/P为: ABC,5

提前谢谢!!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-05-27 02:17:36

您可以使用.forEach()方法来比较这两个对象的属性和值,下面是如何实现这一点的方法,还可以注意我在第一个循环中使用的对象析构函数赋值

代码语言:javascript
复制
var Json1 = [
  { name: "ABC", value: "5" },
  { name: "DEF", value: "85712264" },
];
var Json2 = [
  { name: "DEF", value: "85712264" },
  { name: "ABC", value: "3" },
];

var obj1Keys = Object.keys(Json1);
var obj1Values = Object.values(Json1);
var obj2Keys = Object.keys(Json2);
var obj2Values = Object.values(Json2);

Json1.forEach(({name, value}) => {
   Json2.forEach((elem) => {
    if( name === elem.name && value !== elem.value) {
      console.log(name, value);
    }
  })
});

票数 0
EN

Stack Overflow用户

发布于 2020-05-27 02:01:26

这是工作吗?

代码语言:javascript
复制
var Json1 = [{ "name": "ABC", "value": "5" }, { "name": "DEF", "value": "85712264" }];
    var Json2 = [{ "name": "DEF", "value": "85712264" }, { "name": "ABC", "value": "3" }];

    for (let i = 0; i < Json1.length; i++) {
      const { name, value } = Json1[i];
      for (let j = 0; j < Json2.length; j++) {
        const json2 = Json2[j];
        if (name === json2.name ) {
          console.log(name, value);
        }
      }
    }
票数 0
EN

Stack Overflow用户

发布于 2020-05-27 02:29:23

这方面可能略有变化,具体如下:

代码语言:javascript
复制
var Json1 = [  
{ name: "ABC", value: "5" },
  { name: "DEF", value: "85712264" },
];
var Json2 = [
  { name: "DEF", value: "85712264" },
  { name: "ABC", value: "3" },
];
var map = new Map();
Object.keys(Json1).forEach(k => map.set(Json1[k].name, Json1[k].value));
Object.keys(Json2).forEach(k => {
    if(map.has(Json2[k].name) && map.get(Json2[k].name) !== Json2[k].value)
        console.log(Json2[k].name, map.get(Json2[k].name));
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62034192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档