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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/90514.html
摘要:初始化數(shù)據(jù)輸出結(jié)果轉(zhuǎn)換函數(shù)這個轉(zhuǎn)換函數(shù)不受數(shù)據(jù)關(guān)系層級的限制,無論有多少層關(guān)系,只要一次循環(huán)就能搞定。所有人拿一根線,從他自己的位置開始,走到他父親的位置,那么這個樹形結(jié)構(gòu)就完成了。只要每個節(jié)點都做完了,樹形就出來了。 初始化數(shù)據(jù) var data = [ { parentId: 0, id: 1, value: 1 }, { parentId: 3, id: 2, v...
摘要:在市面上找到一個好用的樹形穿梭框組件都很難,又不想僅僅因為一個穿梭框在之外引入其他重量級插件,因此就有了。版本增加穿梭框左側(cè)右側(cè)數(shù)據(jù)勾選事件,穿梭框左側(cè)右側(cè)底部。 el-tree-transfer 簡介·請先閱讀文檔及版本說明 因為公司業(yè)務(wù)使用vue框架,ui庫使用的element-ui。在市面上找到一個好用的vue樹形穿梭框組件都很難,又不想僅僅因為一個穿梭框在element-ui之...
摘要:因為任務(wù)需要添加到樹的結(jié)構(gòu)上,所以要記錄任務(wù)是添加到哪個結(jié)點上的,需要為每個樹結(jié)點添加一個作為標識以便于在結(jié)點上添加任務(wù),樹狀結(jié)構(gòu)中每個結(jié)點的按照樹的先序遍歷將結(jié)點的依次儲存于數(shù)組中。 localStorage實現(xiàn)本地儲存樹形菜單 最近在寫一個Todo-list的頁面,頁面布局和操作都寫完后,想要用localStorage實現(xiàn)本地儲存。然而對儲存數(shù)據(jù)的方法一無所知,就先去了解了web的...
閱讀 2086·2021-11-24 10:34
閱讀 3061·2021-11-22 11:58
閱讀 3720·2021-09-28 09:35
閱讀 1732·2019-08-30 15:53
閱讀 2784·2019-08-30 14:11
閱讀 1558·2019-08-29 17:31
閱讀 547·2019-08-26 13:53
閱讀 2148·2019-08-26 13:45