[
{source: '001', target: '002', weight: 10},
{source: '001', target: '003', weight: 15},
{source: '002', target: '004', weight: 12},
{source: '004', target: '005', weight: 10},
....
]
轉(zhuǎn)換為
[
{
id: '001',
children: [
{
id: '002',
weight: 10,
children: [
{
id: '004',
weight: 12,
children: [
{
id: '005',
weight: 10
}
]
}
]
},
{
id: '003',
weight: 15,
children: []
}
]
}
]一次循環(huán)構(gòu)建所有的數(shù)樹, 然后把根節(jié)點找到push進去就好了
let arr = [...]
let sidMap = {}
let map= {}
for(let i=0 ;i<arr.length;i++){
let pid = arr[i].source
let sid = arr[i].target
if(!map[sid]){
map[sid]={id:sid, children:[]}
}
map[sid].weight = arr[i].weight
if(!map[pid]){
map[pid]={id:pid, children:[]}
}
map[pid].children.push(map[sid])
sidMap[sid]=true
}
let ans = []
for(let i=0 ;i<arr.length;i++){
let pid = arr[i].source
if(!sidMap[pid]){
sidMap[pid] = true
ans.push(map[pid])
}
}
console.log(ans)const arrays = [
{source: '001', target: '002', weight: 10},
{source: '001', target: '003', weight: 15},
{source: '002', target: '004', weight: 12},
{source: '004', target: '005', weight: 10}
]
let tree = [];
const genTree = (tree = [], arr) => {
if (tree.length === 0) {
return tree.concat(arr);
}
if (tree.some(t => t.target === arr.source)) {
return tree.map(t => {
if(t.target === arr.source) {
if (t.children) {
t.children.concat([arr]);
} else {
t.children = [arr];
}
}
return t;
});
} else {
if(tree.some(t => t.hasOwnProperty('children'))) {
return tree.map(t => {
if (t.hasOwnProperty('children')) {
t.children.concat(genTree(t.children, arr));
}
return t;
});
}
return tree.concat(arr);
}
};
arrays.forEach(arr => {
tree = genTree(tree, arr);
// console.log(tree)
})
console.log(tree);
結(jié)果:
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務(wù)負責iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。