如何通过检查其值来创建嵌套对象

时间:2019-07-04 03:39:33

标签: javascript arrays object for-loop nested

大家好,最简单的方法(当然比我的逻辑更简单)是从同一对象级别构建一些嵌套对象

如您所见,我将ParentTableIDTableID相匹配以设置其子项

到目前为止,这是我目前拥有的对象

let currentObj = [

{
    "TableID":"1",
    "ParentTableID":"0"
},
{
    "TableID":"2",
    "ParentTableID":"1"
},
{
    "TableID":"3",
    "ParentTableID":"0"
},
{
    "TableID":"4",
    "ParentTableID":"3"
},
{
    "TableID":"5",
    "ParentTableID":"0"
},
{
    "TableID":"6",
    "ParentTableID":"5"
},
{
    "TableID":"7",
    "ParentTableID":"6"
},
{
    "TableID":"8",
    "ParentTableID":"7"
},

]

这是我想要的输出

let desiredObj = [
    {
        "TableID":"1",
        "ParentTableID":"0",
        "Children":[
            {
                "TableID":"2",
                "ParentTableID":"1"
            },
        ]
    },        
    {
        "TableID":"3",
        "ParentTableID":"0",
        "Children": [
            {
                "TableID":"4",
                "ParentTableID":"3"
            },
        ]
    },
    {
        "TableID":"5",
        "ParentTableID":"0",
        "Children":[
            {
                "TableID":"6",
                "ParentTableID":"5",
                "Children":[
                    {
                        "TableID":"7",
                        "ParentTableID":"6",
                        "Children":[
                            {
                                "TableID":"8",
                                "ParentTableID":"7"
                            },
                        ]
                    },
                ]
            },
        ]
    },
]

这是我到目前为止没有删除我放进去的孩子

let currentObj = [

  {
    "TableID": "1",
    "ParentTableID": "0"
  },
  {
    "TableID": "2",
    "ParentTableID": "1"
  },
  {
    "TableID": "3",
    "ParentTableID": "0"
  },
  {
    "TableID": "4",
    "ParentTableID": "3"
  },
  {
    "TableID": "5",
    "ParentTableID": "0"
  },
  {
    "TableID": "6",
    "ParentTableID": "5"
  },
  {
    "TableID": "7",
    "ParentTableID": "6"
  },
  {
    "TableID": "8",
    "ParentTableID": "7"
  },

];
let setChildren = function(obj, cObj) {
    cObj.children = [];
    for (var i = 0; i < obj.length; i++) {
      if (obj[i].ParentTableID == cObj.TableID) {
        cObj.children.push(obj[i]);
      }
    }
    return cObj;
  };
  let newObj = [];
for (var i = 0, imax = currentObj.length; i < imax; i++) {
  newObj.push(setChildren(currentObj, currentObj[i]));
};

console.log(newObj)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

0 个答案:

没有答案