对比两个json树形数据,根据id进行对比,不同则累加,相同则去重·
<!doctype html>
<html>
<head>
<script>
var a = [
{
"id": "1",
"name": "张三",
"children": [
{
"id": "1_1",
"label": "张三的孩子",
"children": [
{
"id": "1111",
"label": "张三的孙子",
}
]
}
]
},
{
"id": "2",
"label": "李四",
"children": [
{
"id": "1_2",
"label": "李四的孩子",
"children": [
{
"id": "1112",
"label": "李四的孙子",
}
]
}
]
}
];
var b = [
{
"id": "3",
"label": "王五",
"children": [
{
"id": "3_1",
"label": "王五的孩子",
"children": [
{
"id": "1234",
"label": "王五的孙子",
},
{
"id": "1233",
"label": "王五的孙子2",
}
]
},
{
"id": "2",
"label": "李四",
"children": [
{
"id": "1_2",
"label": "李四的孩子",
"children": [
{
"id": "1113",
"label": "李四的孙子2",
}
]
}
]
}
]
}
];
// console.log(b)
function do_(old, newdata) {
var resultList = newdata;
for(var index in old) {
var need = true;
var i_item = old[index];
for(var indexB in newdata) {
var p_item = newdata[indexB];
if(i_item.id == p_item.id) {
need = false;
if(i_item.children && p_item.children && i_item.children.length > 0 && p_item.children.length > 0) {
do_(i_item.children, p_item.children);
}
break;
}
}
if(need) {
resultList.push(i_item);
}
}
return resultList;
}
var result = do_(b, a);
console.log(result);
</script>
</head>
<body>
</body>
</html>
网友评论