普通分类变树形分类原理
<script>
let arr = [
{ cat_id: 1, name: "零食", pid: 0, level: 1 },
{ cat_id: 2, name: "生活用品", pid: 0, level: 1 },
{ cat_id: 3, name: "攻城狮", pid: 0, level: 1 },
{ cat_id: 4, name: "方便面", pid: 1, level: 2 },
{ cat_id: 5, name: "汽水", pid: 1, level: 2 },
{ cat_id: 6, name: "薯条", pid: 1, level: 2 },
{ cat_id: 7, name: "床单", pid: 2, level: 2 },
{ cat_id: 8, name: "枕头", pid: 2, level: 2 },
{ cat_id: 9, name: "洗发水", pid: 2, level: 2 },
{ cat_id: 10, name: "WEB大前端", pid: 3, level: 2 },
{ cat_id: 11, name: "JAVA", pid: 3, level: 2 },
{ cat_id: 12, name: "PYTHON", pid: 3, level: 2 },
{ cat_id: 13, name: "JS变量", pid: 10, level: 3 },
{ cat_id: 14, name: "JS判断", pid: 10, level: 3 },
{ cat_id: 15, name: "JS循环", pid: 10, level: 3 },
{ cat_id: 16, name: "JAVA变量", pid: 11, level: 3 },
{ cat_id: 17, name: "JAVA判断", pid: 11, level: 3 },
{ cat_id: 18, name: "JAVA循环", pid: 11, level: 3 },
];
function findById(cat_id) {
let child = [];
arr.forEach((value) => {
if (value.pid == cat_id) {
child.push(value);
}
});
return child;
}
function getTree(cat_id = 0) {
let dataArr = findById(cat_id);
if (dataArr.length <= 0) {
return null;
} else {
dataArr.forEach((value) => {
if (getTree(value.cat_id) != null) {
value["children"] = getTree(value.cat_id);
}
});
}
return dataArr;
}
console.log(getTree());
</script>