有如下形式的二維數(shù)組:
array = [
["北京市","海淀區(qū)"],
["北京市","東城區(qū)"],
["遼寧省","沈陽市","和平區(qū)"],
["遼寧省","沈陽市","鐵西區(qū)"],
["臺灣省"]
]
需要將上面的數(shù)組轉換成一個指定格式的對象object:
targetObject = {
text:"",
children: [
{
text: '北京市',
children: [
{
text: '海淀區(qū)',
children: [],
},{
text: '東城區(qū)',
children: []
}
]
},{
text: '遼寧省',
children: [
{
text: '沈陽市',
children: [
{
text: '和平區(qū)',
children: []
},{
text: '鐵西區(qū)',
children: []
}
]
}
]
},{
text: '臺灣省',
children: []
}
]
}
可能看起來有點復雜,不過思路應該還是挺清晰的,應該是一個遞歸的過程,但是本人算法是在不是很好,求大神給一個解決方案
const array = [
["北京市", "海淀區(qū)"],
["北京市", "東城區(qū)"],
["遼寧省", "沈陽市", "和平區(qū)"],
["遼寧省", "沈陽市", "鐵西區(qū)"],
["臺灣省"]
];
function convert(list) {
// map 用來保存已處理節(jié)點的字典,
// 鍵是城市的全路徑(/分隔),
// 值是根據(jù)城市名稱產生的對象
const map = {};
// 根節(jié)點對象
const root = {
text: "",
children: []
};
list.forEach(parts => {
// 對 parts 中的每一個城市進行處理
// reduce 主要用于拼接 key,即全路徑
parts.reduce((parentKey, name) => {
// 根據(jù)父節(jié)點的 key 和當前城市名稱拼接當前城市 key
const key = `${parentKey}/${name}`;
// 如果節(jié)點已經存在,直接跳過
if (!map[key]) {
// 先用 parentKey 找到父節(jié)點,如果沒有,用 root 作為父節(jié)點
const parent = map[parentKey] || root;
// 產生子節(jié)點對象
const node = {
text: name,
children: []
};
// 將子節(jié)點對象加入 map 和父節(jié)點的 children
map[key] = node;
parent.children.push(node);
}
return key;
}, "");
});
return root;
}
const r = convert(array);
console.log(JSON.stringify(r, null, 4));北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產業(yè)為響應國家深化產教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產業(yè)鏈。利用北京大學優(yōu)質教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經理職務負責iOS教學及管理工作。
浪潮集團項目經理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經驗。曾經歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。