下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第一文吃透JS樹狀結(jié)構(gòu)的數(shù)據(jù)處理(增刪改查)目錄問題描述解決方案1、新增節(jié)點(diǎn)2、刪除節(jié)點(diǎn)3、修改節(jié)點(diǎn)4、查找節(jié)點(diǎn)總結(jié)
問題描述
JS處理樹狀結(jié)構(gòu)的增刪改查
最近在開發(fā)一個(gè)后臺(tái)管理系統(tǒng)的權(quán)限管理模塊,涉及到各種樹狀結(jié)構(gòu)的數(shù)據(jù)處理邏輯,例如:增,刪,改,查等;相比普通的數(shù)組結(jié)構(gòu)數(shù)據(jù),樹狀結(jié)構(gòu)的處理就沒有數(shù)組那么的直觀,但是也沒那么復(fù)雜,需要多一步遞歸查找來對(duì)數(shù)據(jù)進(jìn)行深度遍歷操作,那么這里呢,博主也將開發(fā)過程中總結(jié)出來的方法分享給大家,一文帶你吃透JS樹裝結(jié)構(gòu)數(shù)據(jù)處理:
數(shù)據(jù)結(jié)構(gòu)示例
letdata=[{
id:1,
label:'一級(jí)1',
children:[{
id:4,
label:'二級(jí)1-1',
children:[{
id:9,
label:'三級(jí)1-1-1'
},{
id:10,
label:'三級(jí)1-1-2'
},{
id:2,
label:'一級(jí)2',
children:[{
id:5,
label:'二級(jí)2-1'
},{
id:6,
label:'二級(jí)2-2'
},{
id:3,
label:'一級(jí)3',
children:[{
id:7,
label:'二級(jí)3-1'
},{
id:8,
label:'二級(jí)3-2'
解決方案
1、新增節(jié)點(diǎn)
查找樹裝結(jié)構(gòu)的指定節(jié)點(diǎn),新增子節(jié)點(diǎn),代碼如下:
constappendNodeInTree=(id,tree,obj)={
tree.forEach(ele={
if(ele.id===id){
ele.childrenele.children.push(obj):ele.children=[obj]
}else{
if(ele.children){
appendNodeInTree(id,ele.children,obj)
returntree
2、刪除節(jié)點(diǎn)
查找樹裝結(jié)構(gòu)的指定節(jié)點(diǎn),刪除節(jié)點(diǎn),代碼如下
constremoveNodeInTree=(treeList,id)={//通過id從數(shù)組(樹結(jié)構(gòu))中移除元素
if(!treeList||!treeList.length){
return
for(leti=0;itreeList.length;i++){
if(treeList[i].id===id){
treeList.splice(i,1);
break;
removeNodeInTree(treeList[i].children,id)
3、修改節(jié)點(diǎn)
遞歸查找并修改某個(gè)節(jié)點(diǎn)的狀態(tài),代碼如下:
constupdateNodeInTree=(treeList,id,obj)={
if(!treeList||!treeList.length){
return;
for(leti=0;itreeList.length;i++){
if(treeList[i].id==id){
treeList[i]=obj;
break;
setTreeListNodeFalse(treeList[i].children,id,obj);
4、查找節(jié)點(diǎn)
遞歸查找樹形節(jié)點(diǎn)的某個(gè)節(jié)點(diǎn),代碼:
constfindNodeInTree=(data,key,callback)={
for(leti=0;idata.length;i++){
if(data[i].key==key){
returncallback(data[i],i,data)
if(data[i].children){
findNodeInTree(data[i].children,key,callback)
//所查找到的節(jié)點(diǎn)要存儲(chǔ)的方法
letObj={}
findNodeInTree(data,key,(item,index,arr)={
Obj=item
//此時(shí)就是Obj對(duì)應(yīng)的要查找的節(jié)點(diǎn)
console.log(Obj)
總結(jié)
本文介紹了
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 老年精準(zhǔn)醫(yī)學(xué)學(xué)科發(fā)展:人才培養(yǎng)學(xué)科建設(shè)
- 糧食行業(yè)安全規(guī)范講解
- 吊頂培訓(xùn)課件
- 跨境電商政策環(huán)境的影響研究
- Unit 1 Where did you go on vacation - Section A (1a1c &Pronunciation) 聽說課教學(xué)設(shè)計(jì)
- 2026年及未來5年市場(chǎng)數(shù)據(jù)中國化妝品網(wǎng)購行業(yè)市場(chǎng)需求預(yù)測(cè)及投資戰(zhàn)略規(guī)劃報(bào)告
- 青少年環(huán)境意識(shí)形成與培養(yǎng)的研究
- 2026年及未來5年市場(chǎng)數(shù)據(jù)中國卸妝產(chǎn)品行業(yè)發(fā)展運(yùn)行現(xiàn)狀及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 2026年及未來5年市場(chǎng)數(shù)據(jù)中國心臟病用藥行業(yè)市場(chǎng)競(jìng)爭(zhēng)格局及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 老年患者輸血風(fēng)險(xiǎn)評(píng)估與策略
- 藥庫工作述職報(bào)告
- GB 11174-2025液化石油氣
- 熱工儀表工試題全集
- 建筑室外亮化施工方案
- 2025-2030老年婚戀市場(chǎng)需求分析與服務(wù)平臺(tái)優(yōu)化方向
- 引水隧洞洞挖專項(xiàng)施工方案
- 醫(yī)療器械生產(chǎn)企業(yè)變更控制程序
- 疼痛科醫(yī)師進(jìn)修總結(jié)匯報(bào)
- 研究生學(xué)術(shù)交流論壇策劃
- 關(guān)于個(gè)人述責(zé)述廉存在問題及整改措施
- 靜脈穿刺血管選擇課件
評(píng)論
0/150
提交評(píng)論