Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const data = [{id: 3, p_id: 2}, {id: 4, p_id: 1}, {id: 1, p_id: null}, {id: 5, p_id: 2}, {id: 2, p_id: 1}, {id: 6, p_id: 2}];
- const treeData = [];
- function buildTree(data, treeData) {
- const findInChildren = (parent, obj) => {
- if (parent.children) {
- const childParentIndex = parent.children.findIndex((o) => o.id === obj.p_id);
- if (childParentIndex > -1) {
- if (!parent.children[childParentIndex].children) {
- parent.children[childParentIndex].children = [];
- }
- parent.children[childParentIndex].children.push(obj);
- } else {
- for (let ci=0; ci<parent.children.length; ci++) {
- return findInChildren(parent.children[ci], obj);
- }
- }
- } else {
- data.push(obj);
- }
- return;
- }
- for (let i=0; i<data.length; i++) {
- if (!data[i].p_id) {
- treeData.push(data[i]);
- } else {
- const parentIndex = treeData.findIndex((o) => o.id === data[i].p_id);
- if (parentIndex > -1) {
- if (!treeData[parentIndex].children) {
- treeData[parentIndex].children = [];
- }
- treeData[parentIndex].children.push(data[i]);
- } else {
- if (!treeData.length) {
- data.push(data[i]);
- } else {
- for (let ti=0; ti<treeData.length; ti++) {
- findInChildren(treeData[ti], data[i]);
- }
- }
- }
- }
- }
- return treeData;
- }
- const result = buildTree(data, treeData);
- console.log(result);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement