Javascript 合并并与JSON对象中的进行比较
我想在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
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)
};
});