我有两个带有多级嵌套的JSON数据。我想通过以下条件进行比较: 1)如果第一个对象中的名称等于第二个对象中的名称,则比较它们的prop数组;否则,如果两个对象中没有相等的名称,则返回空数组; 2)将对象比较成两个prop数组并找出差异; 3)返回与第一个数组和第二个数组不同的新对象。
const p1 = [{
name: 'B [1]',// name equals and prop differnce,then comparing it
prop: [{
A: { A: 1,B: 2 },B: { A: 1,C: { C: 78,D: 4,T: 7,} }],},{
name: 'B [2]',// name equals,then skiping it
prop: [{
A: { A: 1,D: { C: 3,Y: 13 } }],{
name: 'B [3]',then comparing it
prop: [{
E: { A: 1,R: { A: 1,T: { C: 3,{
name: 'B [4]',// name and prop equals,then skiping it
prop: [{
A: { A: 1,S: { A: 1,}]
const p2 = [{
name: 'B [1]',then comparing it
prop: [{
A: { A: 1,B: 8 },C: { C: 3,O: 9 } }],{
name: 'B [6]',// name not equals,D: 4 } }],B: 2,U: 150 },}]
结果应如下所示:
const result = [{
name: 'B [1]',propOne: [{
A: { B: 2 },O: 'Missing' }
}],propTwo: [{
A: { B: 8 },D: 'Missing',O: 9 }
}],propOne: [{
R: { U: 'Missing' }
}],propTwo: [{
R: { U: 150 }
}]
}]
我在这里也很痛苦地附加了我一文不值的代码,什么都不做。
const compare = (p1,p2) => {
return p1.reduce((acc,curr) => {
p2.reduce((acc2,curr2) => {
if (curr.name === curr2.name) {
const keys1 = R.fromPairs(Object.keys(curr.prop[0]).map(x => ([x,curr.prop[0][x]])));
const keys2 = R.fromPairs(Object.keys(curr2.prop[0]).map(x => ([x,curr2.prop[0][x]])));
}
return acc;
},[])
return acc;
},[])
}
我将非常感谢您的帮助和建议。