let arr = [ { id: 1, name: '张一', parentId: null }, { id: 2, name: '张二', parentId: 1 }, { id: 3, name: '张三', parentId: 1 }, { id: 4, name: '张四', parentId: 2 }, { id: 5, name: '张五', parentId: 2 }, { id: 6, name: '张六', parentId: 3 }, { id: 7, name: '张七', parentId: 4 }, { id: 8, name: '张八', parentId: 6 } ];

let obj = {}; arr.forEach(item => { if (item.parentId === null) { obj = { ...item, children: [] }; } else { const parent = findParent(obj, item.parentId); parent.children.push({ ...item, children: [] }); } });

function findParent(node, parentId) { if (node.id === parentId) { return node; } if (node.children && node.children.length > 0) { for (let i = 0; i < node.children.length; i++) { const parent = findParent(node.children[i], parentId); if (parent) { return parent; } } } return null; }

console.log(obj);

JavaScript 对象数组转换为嵌套对象:父子关系树结构

原文地址: http://www.cveoy.top/t/topic/l5DE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录