Javascript 合并并与JSON对象中的进行比较

Javascript 合并并与JSON对象中的进行比较,javascript,jquery,html,json,object,Javascript,Jquery,Html,Json,Object,我想在JSON中执行对象的合并和比较 StudentJson:[ { name : "harish", empid: "323234", exams: "central" }, { name : "harish", empid: "323234", week41: "30", week42: "20", }, { name : "harish", empid: "323234", week47: "47", week50: "86", }, { name : "h

我想在JSON中执行对象的合并和比较

StudentJson:[
{ name : "harish",
  empid: "323234",
  exams: "central"
},
{ name : "harish",
  empid: "323234",
  week41: "30",
  week42: "20",
},
{ name : "harish",
  empid: "323234",
  week47: "47",
  week50: "86",
},
{ name : "harish",
  empid: "323234",
  week51: "67",
  week52: "90",
},
{ name : "kishore",
  empid: "783433",
  exams: "state"
},
{ name : "kishore",
  empid: "783433",
  week20: "23",
  week23: "56",
},
{ name : "kishore",
  empid: "323234",
  week30: "75",
  week38: "73",
},
{ name : "kishore",
  empid: "323234",
  week40: "23",
  week41: "86",
},... 
]
预期Json输出:

StudentJson:[
{ name : "harish",
  empid: "323234",
  exams: "central",
  week41: "30",
  week42: "20",
  week47: "47",
  week50: "86",
  week51: "67",
  week52: "90"
},
{ name : "kishore",
  empid: "783433",
  exams: "state",
  week20: "23",
  week23: "56",
  week30: "75",
  week38: "73",
  week40: "23",
  week41: "86"
}
]

请帮助我在基本JavaScript程序中实现。

您可以执行该功能

var deepEquals = function(o1, o2) {
         var k1 = Object.keys(o1).sort();
         var k2 = Object.keys(o2).sort();
         if (k1.length != k2.length) return false;
         return k1.zip(k2, function(keyPair) {
           if(typeof o1[keyPair[0]] == typeof o2[keyPair[1]] == "object"){
             return deepEquals(o1[keyPair[0]], o2[keyPair[1]])
           } else {
             return o1[keyPair[0]] == o2[keyPair[1]];
           }
         }).all();
       }
    });
和我一起想想,你有8个值的StudentJson,你需要逐一比较

我们可以使用一个循环:

for(var i=0;i < StudentJson.length; i++){

     //Here we do compare the value of the first position with the second position
  if (deepEquals(StudentJson[i], StudentJson[i+1])){
     //This condition is going returning true or false
  }
}
编辑,更新

注意,是否显示StudentJson包含语法错误、重复的empid值?StudentJson中索引的1、2、3、5、6、7处的对象中的尾随逗号。另外,最后两个属性名为kishore的对象的empid值与属性名为harish的对象的empid相同,即323234

调整上述语法错误和重复的empid值

json

js

var StudentJson=[ { 姓名:哈里什, empid:323234, 考试:中环, 周41:30, 周42:20, 第47周:47, 第50周:86, 第51周:67, 周52:90 }, { 姓名:哈里什, empid:323234, 周41:30, 周42:20 }, { 姓名:哈里什, empid:323234, 第47周:47, 周末50:86 }, { 姓名:哈里什, empid:323234, 第51周:67, 周52:90 }, { 姓名:基肖尔, empid:783433, 考试:国家, 周20:23, 周23:56, 第30周:75, 第38周:73, 第40周:23, 第41周:86 }, { 姓名:基肖尔, empid:783433, 周20:23, 周23:56 }, { 姓名:基肖尔, empid:783433, 第30周:75, 第38周:73 }, { 姓名:基肖尔, empid:783433, 第40周:23, 第41周:86 } ]; var-res=[]; StudentJson.mapfunctionv,k{ 如果k==0{ res.pushv; }; 如果k>0&&v.name==res[0].name{ $.extendres[0],v }else ifv.name!==res[0]。name{ res[1]?$.extendres[1],v:res.pushv }; }; $pre.textJSON.stringifyres,null,4
你开始,我们会在你陷入困境时提供帮助。请展示您目前所拥有的。@user162366请参阅帖子。ThanksHow我将在多个对象中使用它。因为我们在这里只经过两个物体。var anObj=JSON.parsejsonString1;var anotherObj=JSON.parsejsonString2;我不知道如何使用这个功能。你能分享一些工作实例吗。谢谢。我将如何为N个学生json对象实现这个StudentJson.map函数。。
    var StudentJson = [
        {
            "name": "harish",
            "empid": "323234",
            "exams": "central",
            "week41": "30",
            "week42": "20",
            "week47": "47",
            "week50": "86",
            "week51": "67",
            "week52": "90"
        },
        {
            "name": "harish",
            "empid": "323234",
            "week41": "30",
            "week42": "20"
        },
        {
            "name": "harish",
            "empid": "323234",
            "week47": "47",
            "week50": "86"
        },
        {
            "name": "harish",
            "empid": "323234",
            "week51": "67",
            "week52": "90"
        },
        {
            "name": "kishore",
            "empid": "783433",
            "exams": "state",
            "week20": "23",
            "week23": "56",
            "week30": "75",
            "week38": "73",
            "week40": "23",
            "week41": "86"
        },
        {
            "name": "kishore",
            "empid": "783433",
            "week20": "23",
            "week23": "56"
        },
        {
            "name": "kishore",
            "empid": "783433",
            "week30": "75",
            "week38": "73"
        },
        {
            "name": "kishore",
            "empid": "783433",
            "week40": "23",
            "week41": "86"
        }
    ];
var res = [];
StudentJson.map(function(v, k) {
  if (k === 0) {
    res.push(v);
  };
  if (k > 0 && v.name === res[0].name) {
    $.extend(res[0], v)
  } else if(v.name !== res[0].name) {
    res[1] ? $.extend(res[1], v) : res.push(v)
  };
});