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

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

作者: 吖_7c06 | 来源:发表于2019-12-09 11:24 被阅读0次

    对比两个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>
    

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/eirbgctx.html