場景
這又是項目中一個真實存在的場景悯许。
報表中展示列表時經(jīng)常會出現(xiàn)層級下鉆傍药,由于報表框架設(shè)計的局限性跑芳,下鉆時并非再次發(fā)起新的數(shù)據(jù)請求突照,而是一次性下載完報表需要的所有數(shù)據(jù)帮非,那么如何做到數(shù)據(jù)列表下鉆時的父子關(guān)系氧吐?
H5 的報表解析引擎已使用 JS 實現(xiàn)讹蘑,具體實現(xiàn)方式可再開新題交流;現(xiàn)使用移動端原生代碼重寫報表控件筑舅,數(shù)據(jù)的父子關(guān)系則必須提交處理座慰,那么本次競賽的題來了:
數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)化邏輯
- 第二維數(shù)組結(jié)構(gòu):[自身ID, 父節(jié)點ID, 列表數(shù)組]
- 前兩個數(shù)據(jù)項(自身ID/父節(jié)點ID)只是用來處理父子關(guān)系,不作展示
- 第一層級的數(shù)據(jù)父節(jié)點ID 為空字符串
[
['自身ID1', '', '標(biāo)題1', 1, 2, 3],
['自身ID2', '', '標(biāo)題2', 4, 5, 6],
['自身ID11', '自身ID1', '標(biāo)題3', 7, 8, 9],
['自身ID21', '自身ID2', '標(biāo)題4', 10, 11, 12],
['自身ID22', '自身ID2', '標(biāo)題5', 13, 14, 15],
['自身ID111', '自身ID11', '標(biāo)題6', 16, 17, 18],
['自身ID211', '自身ID21', '標(biāo)題7', 19, 20, 21],
['自身ID2111', '自身ID211', '標(biāo)題8', 22, 23, 24]
]
=>
[
{
"main_data": ["標(biāo)題1", 1, 2, 3],
"sub_data": [
{
"main_data": ["標(biāo)題3", 7, 8, 9],
"sub_data": [
{
"main_data": ["標(biāo)題6", 16, 17, 18],
"sub_data": []
}
]
}
]
},
{
"main_data": ["標(biāo)題2",4,5,6],
"sub_data": [
{
"main_data": ["標(biāo)題4",10,11,12],
"sub_data": [
{
"main_data": ["標(biāo)題7",19,20,21],
"sub_data": [
{
"main_data": ["標(biāo)題8",22,23,24],
"sub_data": []
}
]
}
]
},
{
"main_data": ["標(biāo)題5",13,14,15],
"sub_data": []
}
]
}
]
需求
- 把上述二維數(shù)組轉(zhuǎn)化為預(yù)期數(shù)據(jù)結(jié)構(gòu)
- 在使用職位編程語言實現(xiàn)的基礎(chǔ)上翠拣,使用其他語言提供解決方案加分(多多益善)
- 題目相對簡單版仔,不可重復(fù)他人相同編程語言的相同解決方案,以 github 提交時間為準(zhǔn)
其他
獎金 1000
代碼提交至:IntfocusCoding
考慮到近期工作較為飽和误墓,截止時間下周六(17/07/05)
編寫代碼時遵循團隊內(nèi)部的編程規(guī)范
-
源代碼文件名稱格式
- 單文件:
提交者-編程語言.語言后綴
- 項目文件夾:
提交者-編程語言
- 單文件:
鼓勵封裝代碼邏輯為單一函數(shù)或類蛮粮,調(diào)用接口傳參,運行輸出預(yù)期結(jié)果
整理文檔時遵循團隊內(nèi)部 markdown 規(guī)范
提交時遵循團隊內(nèi)部 commit 格式
在職位語言實現(xiàn)基礎(chǔ)上谜慌,鼓勵使用多種語言實現(xiàn)