[英]Keep only difference between two JSON
我有DOM
樹的JSON
版本,我只想保留頁面之間的區別(刪除導航頁腳...)
例:
const a = {
id: '1',
child: [
{
id: '2',
child: [{id: '1'}, {id: '2'}]
},
{
id: '3',
child: [{id: '1'}, {id: '5'}]
}
]
};
和
const b = {
id: '1',
child: [
{
id: '2',
child: [{id: '1'}, {id: '4'}]
},
{
id: '3',
child: [{id: '1'}, {id: '4'}]
}
]
};
具有功能
diff(a, b)
這個結果
{
id: '1',
child: [
{
id: '2',
child: [{id: '2'}]
},
{
id: '3',
child: [{id: '5'}]
}
]
}
我是基於遞歸函數創建的
const diff = (a, b) => {
if (Array.isArray(a)) {
}
if (typeof a === 'object') {
// ...
extract(a.child, b.child);
}
}
我該怎么做呢? 是否有npm
軟件包? 或使用JSON
Path? 我想創建一個函數,該函數在兩個JSON
文件之間刪除相等的“ 部分 ”,該函數的輸出具有相同的結構,但沒有“ 相等的部分 ”唯一的區別。
您可以做一些不同的操作,這應該為您提供正確的價值。
function diff(obj1, obj2) {
var ret = {};
for(var i in obj2) {
if(!obj1.hasOwnProperty(i) || obj2[i] !== obj1[i]) {
ret[i] = obj2[i];
}
}
return ret;
};
在此處查看代碼以及示例數據https://jsbin.com/toboto/edit?js,控制台
但是,此解決方案不是遞歸的。 另外,如果有很大的不同,我建議您檢出此庫https://github.com/flitbit/diff
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.