有如下列表结构:
[ { id: 1, text: '节点 1', parentId: 0 //这里用 0 表示为顶级节点 }, { id: 2, text: '节点 1_1', parentId: 1 //通过这个字段来确定子父级 } ... ]
要求转化成如下树形结构:
[ { id: 1, text: '节点 1', parentId: 0, children: [ { id:2, text: '节点 1_1', parentId:1 } ] } ]
实现代码如下:
function listToTree(data) { let temp = {}; let treeData = []; for (let i = 0; i < data.length; i++) { temp[data[i].id] = data[i]; } for (let i in temp) { if (+temp[i].parentId != 0) { if (!temp[temp[i].parentId].children) { temp[temp[i].parentId].children = []; } temp[temp[i].parentId].children.push(temp[i]); } else { treeData.push(temp[i]); } } return treeData; }
相信你能用到,拿走不谢!