let listToTree = (list, id = "id", pId = "pId") => { let map = {}, listMap = {}, rootList = []; for (let i = 0, max = list.length; i < max; i++) { let one = Object.assign({}, list[i]); map[one[id]] = one; if (listMap[one[id]]) { one.children = listMap[one[id]]; } if (one.hasOwnProperty(pId) && one[pId] !== "") { if (map[one[pId]]) { let c = map[one[pId]].children || (map[one[pId]].children = []); c.push(one); } else { if (!listMap[one[pId]]) listMap[one[pId]] = [one]; else listMap[one[pId]].push(one); } } else { rootList.push(one); } } return { list: rootList, map }; };
使用
let data=[{ id:1, text:"1" },{ id:2, pId:1, text:"2" }]; let tree=listToTree(data);
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/90514.html
摘要:初始化數(shù)據(jù)輸出結(jié)果轉(zhuǎn)換函數(shù)這個(gè)轉(zhuǎn)換函數(shù)不受數(shù)據(jù)關(guān)系層級(jí)的限制,無(wú)論有多少層關(guān)系,只要一次循環(huán)就能搞定。所有人拿一根線(xiàn),從他自己的位置開(kāi)始,走到他父親的位置,那么這個(gè)樹(shù)形結(jié)構(gòu)就完成了。只要每個(gè)節(jié)點(diǎn)都做完了,樹(shù)形就出來(lái)了。 初始化數(shù)據(jù) var data = [ { parentId: 0, id: 1, value: 1 }, { parentId: 3, id: 2, v...
摘要:在市面上找到一個(gè)好用的樹(shù)形穿梭框組件都很難,又不想僅僅因?yàn)橐粋€(gè)穿梭框在之外引入其他重量級(jí)插件,因此就有了。版本增加穿梭框左側(cè)右側(cè)數(shù)據(jù)勾選事件,穿梭框左側(cè)右側(cè)底部。 el-tree-transfer 簡(jiǎn)介·請(qǐng)先閱讀文檔及版本說(shuō)明 因?yàn)楣緲I(yè)務(wù)使用vue框架,ui庫(kù)使用的element-ui。在市面上找到一個(gè)好用的vue樹(shù)形穿梭框組件都很難,又不想僅僅因?yàn)橐粋€(gè)穿梭框在element-ui之...
摘要:因?yàn)槿蝿?wù)需要添加到樹(shù)的結(jié)構(gòu)上,所以要記錄任務(wù)是添加到哪個(gè)結(jié)點(diǎn)上的,需要為每個(gè)樹(shù)結(jié)點(diǎn)添加一個(gè)作為標(biāo)識(shí)以便于在結(jié)點(diǎn)上添加任務(wù),樹(shù)狀結(jié)構(gòu)中每個(gè)結(jié)點(diǎn)的按照樹(shù)的先序遍歷將結(jié)點(diǎn)的依次儲(chǔ)存于數(shù)組中。 localStorage實(shí)現(xiàn)本地儲(chǔ)存樹(shù)形菜單 最近在寫(xiě)一個(gè)Todo-list的頁(yè)面,頁(yè)面布局和操作都寫(xiě)完后,想要用localStorage實(shí)現(xiàn)本地儲(chǔ)存。然而對(duì)儲(chǔ)存數(shù)據(jù)的方法一無(wú)所知,就先去了解了web的...
閱讀 2094·2021-11-24 10:34
閱讀 3068·2021-11-22 11:58
閱讀 3728·2021-09-28 09:35
閱讀 1740·2019-08-30 15:53
閱讀 2791·2019-08-30 14:11
閱讀 1566·2019-08-29 17:31
閱讀 557·2019-08-26 13:53
閱讀 2153·2019-08-26 13:45