Commit 0864d8c4 by qlintonger xeno

feat: 修复额外内容+1234

parent a9bc5113
......@@ -70,31 +70,56 @@ export class Processing {
Added: []
}
// 获取序列号、hash以及标签中任一不相同的节点
let nonSameInOld = resultAFlatted.filter(a=> {
return !resultBFlatted.find(v=>v.chained.join('$') === a.chained.join('$') && v.hash === a.hash && a.label === v.label)
})
let nonSameInNew = resultBFlatted.filter(a=> {
return !resultAFlatted.find(v=>v.chained.join('$') === a.chained.join('$') && v.hash === a.hash && a.label === v.label)
})
const nonSameInOld = resultAFlatted.filter(a => {
return !resultBFlatted.find(v =>
v.chained.join('$') === a.chained.join('$') &&
v.hash === a.hash &&
a.label === v.label
);
});
const nonSameInNew = resultBFlatted.filter(a => {
return !resultAFlatted.find(v =>
v.chained.join('$') === a.chained.join('$') &&
v.hash === a.hash &&
a.label === v.label
);
});
// 如果标签和序列号相同,但是hash不同,则视为修改
let nodeChangedInOld = nonSameInOld.filter(a=> {
return nonSameInNew.find(v=>v.chained.join('$') === a.chained.join('$') && a.label === v.label)
})
let nodeChangedInNew = nonSameInNew.filter(a=> {
return nonSameInOld.find(v=>v.chained.join('$') === a.chained.join('$') && a.label === v.label)
})
const nodeChangedInOld = nonSameInOld.filter(a => {
return nonSameInNew.find(v =>
v.chained.join('$') === a.chained.join('$') &&
a.label === v.label
);
});
const nodeChangedInNew = nonSameInNew.filter(a => {
return nonSameInOld.find(v =>
v.chained.join('$') === a.chained.join('$') &&
a.label === v.label
);
});
// 再获取剩下来不同的节点
let stillDiffInOld = nonSameInOld.filter(a=> {
return !nodeChangedInOld.find(v=>v.key === a.key)
})
let stillDiffInNew = nonSameInNew.filter(a=> {
return !nodeChangedInNew.find(v=>v.key === a.key)
})
for (const node of stillDiffInOld) {
let samePosInCurrent = resultBFlatted.find(v=>v.chained.join('$') === node.chained.join('$'))
console.log('node-old-reflect', samePosInCurrent)
}
console.log('non-same', {nonSameInNew, nonSameInOld, nodeChangedInOld, nodeChangedInNew, stillDiffInNew, stillDiffInOld})
const stillDiffInOld = nonSameInOld.filter(a => {
return !nodeChangedInOld.find(v => v.key === a.key);
});
const stillDiffInNew = nonSameInNew.filter(a => {
return !nodeChangedInNew.find(v => v.key === a.key);
});
// 将修改的节点添加到结果中
dataForOld.Changed.push(...nodeChangedInOld);
dataForNew.Changed.push(...nodeChangedInNew);
// 将删除的节点添加到结果中
dataForOld.Deleted.push(...stillDiffInOld);
// 将新增的节点添加到结果中
dataForNew.Added.push(...stillDiffInNew);
return {
dataForNew,
dataForOld,
......@@ -104,7 +129,7 @@ export class Processing {
treeNew: resultB,
xmlContentOld: this.serializeXML(treeA),
xmlContentNew: this.serializeXML(treeB)
}
};
}
// 处理 XML 字符串的方法,返回树形数据和 XML DOM 对象
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment