将扁平化数据转为树结构是常见的开发需求。
实现原理:遍历数据,把没有父节点映射的节点作为根节点,再遍历一次数据,将当前遍历节点标识的值与前一次遍历节点的父节点映射标识的值对比,如果相等则当前遍历节点是前一次遍历节点的父节点。
扁平化数据转树结构函数
function data2Tree(data) { let result = []; for (let i = 0; i < data.length - 1; i++) { if (!data[i].pid) { result.push(data[i]); } else { for (let j = 0; j < data.length; j++) { if (data[j].id === data[i].pid) { if (!Array.isArray(data[j].children)) { data[j].children = []; } data[j].children.push(data[i]); } } } } return result; }