let flatArr = [
{ id: 1, title: '标题1', parent_id: 0 },
{ id: 2, title: '标题2', parent_id: 0 },
{ id: 3, title: '标题2-1', parent_id: 2 },
{ id: 4, title: '标题3-1', parent_id: 3 },
{ id: 5, title: '标题4-1', parent_id: 4 },
{ id: 6, title: '标题2-1', parent_id: 2 },
]
function convert (list) {
const result = [];
const map = list.reduce((pre,cur) => {
pre[cur.id] = cur;
return pre
}, {})
// 1: {id: 1, title: '标题1', parent_id: 0}
// 2: {id: 2, title: '标题2', parent_id: 0}
// 3: {id: 3, title: '标题2-1', parent_id: 2}
// 4: {id: 4, title: '标题3-1', parent_id: 3}
// 5: {id: 5, title: '标题4-1', parent_id: 4}
// 6: {id: 6, title: '标题2-1', parent_id: 2}
for (let item of list) {
if (item.parent_id === 0) {
result.push(item)
continue
}
if (item.parent_id in map) {
const parent = map[item.parent_id]
parent.children = parent.children || []
parent.children.push(item)
}
}
return result
}
console.log(convert(flatArr));
运行结果
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。