大家好,最简单的方法(当然比我的逻辑更简单)是从同一对象级别构建一些嵌套对象
如您所见,我将ParentTableID
与TableID
相匹配以设置其子项
到目前为止,这是我目前拥有的对象
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>