共计 578 个字符,预计需要花费 2 分钟才能阅读完成。
题目:
将一维数组,转化成嵌套的 tree
const arr = [{ id: 1, title: "child1", parentId: 0},
{id: 2, title: "child2", parentId: 0},
{id: 3, title: "child1_1", parentId: 1},
{id: 4, title: "child1_2", parentId: 1},
{id: 5, title: "child2_1", parentId: 2}
]
const buildChildrenArr = (arr) => {const res = [];
const map = {};
for (let i = 0; i < arr.length; i++) {map[arr[i].id] = {...arr[i], children: []};
const key = arr[i].id;
if (!map[key].parentId) {res.push(map[key])
} else {const parentId = map[key].parentId
if (parentId === map[parentId].id) {map[parentId].children.push(map[key])
}
}
}
return res;
};
console.log('buildChildrenArr', buildChildrenArr(arr));
也能够用递归的形式写,等我钻研分明了再补充
正文完