Javascript 比较两个Java脚本对象以找出差异

Javascript 比较两个Java脚本对象以找出差异,javascript,arrays,json,Javascript,Arrays,Json,我对java脚本有一定的了解,我正在尝试比较两个java脚本对象以找出差异。下面是我在函数中使用的代码,没有得到期望的输出 function compoare() { var Json1 = [ { name: "ABC", value: "5" }, { name: "DEF", value: "85712264" }, ]; var Json2 = [ { name: "DEF", value: "85712264" }, { name: "ABC

我对java脚本有一定的了解,我正在尝试比较两个java脚本对象以找出差异。下面是我在函数中使用的代码,没有得到期望的输出

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]);
        }
      }
    }
  }
}
函数compare(){
var Json1=[
{名称:“ABC”,值:“5”},
{名称:“DEF”,值:“85712264”},
];
var Json2=[
{名称:“DEF”,值:“85712264”},
{名称:“ABC”,值:“3”},
];
var obj1Keys=Object.keys(Json1);
var obj1Values=对象值(Json1);
var obj2Keys=Object.keys(Json2);
var obj2Values=Object.values(Json2);
控制台日志(obj1键);
控制台日志(OBJ10值);
for(设i=0;i
我想比较Json1中的“name”和“value”,并签入Json2。如果找到匹配的“名称”,则比较相应“名称”的“值”。如果“值”存在差异,则从Json1打印“名称”和“值”对

预计O/p为:ABC,5

提前谢谢

这是工作吗

var Json1=[{“name”:“ABC”,“value”:“5”},{“name”:“DEF”,“value”:“85712264”}];
var Json2=[{“name”:“DEF”,“value”:“85712264”},{“name”:“ABC”,“value”:“3”}];
for(设i=0;i
这是工作吗

var Json1=[{“name”:“ABC”,“value”:“5”},{“name”:“DEF”,“value”:“85712264”}];
var Json2=[{“name”:“DEF”,“value”:“85712264”},{“name”:“ABC”,“value”:“3”}];
for(设i=0;i
您可以使用方法来比较两个对象的属性和值,下面是一个实现方法,请注意我在第一个循环中使用的方法

var Json1=[
{名称:“ABC”,值:“5”},
{名称:“DEF”,值:“85712264”},
];
var Json2=[
{名称:“DEF”,值:“85712264”},
{名称:“ABC”,值:“3”},
];
var obj1Keys=Object.keys(Json1);
var obj1Values=对象值(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(名称、值);
}
})
});您可以使用方法来比较两个对象的属性和值,下面是一个如何实现这一点的方法,还要注意我在第一个循环中使用的方法

var Json1=[
{名称:“ABC”,值:“5”},
{名称:“DEF”,值:“85712264”},
];
var Json2=[
{名称:“DEF”,值:“85712264”},
{名称:“ABC”,值:“3”},
];
var obj1Keys=Object.keys(Json1);
var obj1Values=对象值(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(名称、值);
}
})

});这方面的细微变化可能如下:

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

这方面的细微变化可能如下所示:

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

非常感谢。它按照我的预期工作,允许我在函数中添加更多代码。真的很感激谢谢你!!它按照我的预期工作,允许我在函数中添加更多代码。真的很感激