功能介绍
- 两级循环(数组 filter 方法),四行代码实现
- 支持乱序;
- 支持自定义子级、父级名字、初始首级 id 值、自命名 产生子集合名字
直接看代码:注释啥都有
const list = [
{ "id": "4", "pid": "1", "name": "大型家电" },
{ "id": "5", "pid": "1", "name": "生活电器" },
{ "id": "1", "pid": "0", "name": "家用电器" },
{ "id": "2", "pid": "0", "name": "服装" },
{ "id": "3", "pid": "0", "name": "化妆品" },
{ "id": "7", "pid": "4", "name": "空调" },
{ "id": "10", "pid": "4", "name": "热水器" },
{ "id": "11", "pid": "3", "name": "面部护理" },
{ "id": "12", "pid": "3", "name": "口腔护理" },
{ "id": "13", "pid": "2", "name": "男装" },
], treeData = treeDataList(list, '0', 'id', 'pid', 'children'),
{ log } = console
function treeDataList(list, firstId = '0', id, parentId, children) {
return list.filter(father => {
const branchArr = list.filter(child => father[id] === child[parentId])
branchArr.length > 0 ? father[children] = branchArr : null
return father[parentId] === firstId
})
}
log(treeData, '---')
效果图
如何简洁看效果呢?
- 打开浏览器空白界面的控制面板(控制台 f12)
- 复制粘贴