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 result = [];

// 首先找到根节点,即parentId为null的节点 let root = arr.find(item => item.parentId === null);

// 定义递归函数,将当前节点的子节点添加到children数组中 function findChildren(parent) { parent.children = arr.filter(item => item.parentId === parent.id); parent.children.forEach(child => { findChildren(child); }); }

// 调用递归函数,将每个节点的子节点添加到children数组中 findChildren(root);

// 最后将根节点添加到结果数组中 result.push(root);

JavaScript 对象数组转换为嵌套对象结构

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

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