对比两个json树形数据,根据id进行对比,不同则累加,相同则去

2019-12-09  本文已影响0人  吖_7c06

对比两个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>
上一篇下一篇

猜你喜欢

热点阅读