标签:面试题 name 记录 pid children item 部门 无法 id
输入
let arr = [
{id: 1, name: '部门1', pid: 0},
{id: 2, name: '部门2', pid: 1},
{id: 3, name: '部门3', pid: 1},
{id: 4, name: '部门4', pid: 3},
{id: 5, name: '部门5', pid: 4},
]
输出
[
{
"id": 1,
"name": "部门1",
"pid": 0,
"children": [
{
"id": 2,
"name": "部门2",
"pid": 1,
"children": []
},
{
"id": 3,
"name": "部门3",
"pid": 1,
"children": [
// 结果 ,,,
]
}
]
}
]
children中放置id和pid匹配项
后续无意在掘金上面发现了这个答案,当时以为这题很简单的,没想到一上机就…
let arr = [
{id: 1, name: '部门1', pid: 9},
{id: 2, name: '部门2', pid: 1},
{id: 3, name: '部门3', pid: 1},
{id: 4, name: '部门4', pid: 3},
{id: 5, name: '部门5', pid: 4},
];
let a = new Map();
let b = [];
arr = arr.sort((a,b)=>a.pid-b.pid);
for(let item of arr){
const value = {...item,children:[]};
if(!a.has(item.pid)){
b.push(value);
a.set(item.id,value);
}else{
const srouce = a.get(item.pid);
srouce.children.push(value);
a.set(item.id,value)
}
}
个人觉得面试前刷题包装自己是非常不好的,经验都是在项目和实战中总结出来的。
标签:面试题,name,记录,pid,children,item,部门,无法,id 来源: https://blog.csdn.net/weixin_43321726/article/details/122404568
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。