JS 递归


<script type="text/javascript">
let obj = [{
id: 1,
name: '顶级1',
pid: 0
}, {
id: 2,
name: '顶级1 第二级1',
pid: 1
}, {
id: 3,
name: '顶级1 第二级2',
pid: 1
}, {
id: 4,
name: '第二级1 第三级1',
pid: 2
}, {
id: 5,
name: '第二级2 第三级2',
pid: 3
}, {
id: 6,
name: '第三级1 第四级',
pid: 4
}, {
id: 7,
name: '第五级',
pid: 6
}, {
id: 8,
name: '第六级',
pid: 7
}, {
id: 9,
name: '第7级',
pid: 8
}, {
id: 10,
name: '第8级',
pid: 9
}, {
id: 11,
name: '顶级2',
pid: 0
}];




function getTop(data, pid) {
var tree = [];
data.forEach(function (item) {
if (item.pid == pid) {
tree.push(item);
getChild(data, item, item.id);
}
});
return tree;
}

function getChild(arr, parentItem, pid) {
parentItem.children = parentItem.children ? parentItem.children : [];
arr.forEach(function (item) {
if (item.pid == pid) {
parentItem.children.push(item);
getChild(arr, item, item.id);
}
});
return parentItem.children;
}

let aaaa = getTop(obj, 0);
console.log(aaaa)
</script>

posted @ 2020-08-19 11:02  mrt_yy  阅读(146)  评论(0编辑  收藏  举报