1.用parentId的數據格式轉換成有children的數據
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:國際域名空間、網絡空間、營銷軟件、網站建設、內丘網站維護、網站推廣。
var array = []; var iterator1 = function (treeNodes) { if (!treeNodes || !treeNodes.length) return; var parent,i = 0,obj = {}; while(i < treeNodes.length ){ node = treeNodes[i++]; obj[node.id] = node; if(node.parentId){ parent = obj[node.parentId]; if(parent.children){ node["parIndex"] = parent.parIndex +"."+ (parent.children.length + 1); node.cell[0] = node["parIndex"]; parent.children.push(node); }else{ node["parIndex"] = parent.parIndex +"."+ 1; node.cell[0] = node["parIndex"]; parent.children = [node]; } }else{ node["parIndex"] = 1; array.push(node); } } return array; }; console.log('------------- 遞歸 ------------------'); iterator1(treeNodes);
2.將有children的數據拆成平級對象(非遞歸深度優先)(1 1.1 1.2 2 ...)
var array1 = []; var iterator2 = function (treeNodes) { var stack = []; if (!treeNodes || !treeNodes.length) return; //先將第一層節點放入棧 for (var i = 0, len = treeNodes.length; i < len; i++) { stack.push(treeNodes[i]); } var item; while (stack.length) { item = stack.shift(); console.log(item.id); //如果該節點有子節點,繼續添加進入棧頂 if (item.children && item.children.length) { stack = item.children.concat(stack); } delete item.children; delete item.parIndex; array1.push(item); } }; console.log('------------- 非遞歸深度優先實現 ------------------'); iterator2(array);
3.非遞歸廣度優先(1 2 1.1 1.2 ...)
//非遞歸廣度優先實現 var iterator1 = function (treeNodes) { var stack = []; if (!treeNodes || !treeNodes.length) return; //先將第一層節點放入棧 for (var i = 0, len = treeNodes.length; i < len; i++) { stack.push(treeNodes[i]); } var item; while (stack.length) { item = stack.shift(); console.log(item.id); //如果該節點有子節點,繼續添加進入棧底 if (item.children && item.children.length) { stack = stack.concat(item.children); } } }; console.log('------------- 非遞歸廣度優先實現 ------------------'); iterator1(treeNodes);
本文題目:JavaScript之parentId轉換成children數據,并解析
標題來源:http://vcdvsql.cn/article22/phopcc.html
成都網站建設公司_創新互聯,為您提供網頁設計公司、ChatGPT、網站策劃、企業建站、外貿建站、搜索引擎優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯