日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java树形转扁平_js把树形数据转成扁平数据

發布時間:2024/7/23 java 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java树形转扁平_js把树形数据转成扁平数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我就直接上代碼了都是實際項目里面用到的

1.假設這個json就已經是樹型結構數據了(如果不知道怎么實現樹型結構數據請看我另一篇博客)

var compressedArr=afcommon.treeDataToCompressed(json);

/*******************************JS封裝好的方法*********************************************/

var afcommon=(function ($) {

var prefix="|—";

let compressedData=[];// 用于存儲遞歸結果(扁平數據)

return {

/**

* 把扁平數據轉成樹型結構數據(可以實現無限層級樹形數據結構,只適用于單個表的數據)

* @param source

* @param id

* @param parentId

* @param children

*/

treeDataformat : function(source, id, parentId, children){

let cloneData = JSON.parse(JSON.stringify(source)); // 對源數據深度克隆

return cloneData.filter(father=>{ // 循環所有項,并添加children屬性

let branchArr = cloneData.filter(child => father[id] == child[parentId]); // 返回每一項的子級數組

branchArr.length>0 ? father[children] = branchArr : '' //給父級添加一個children屬性,并賦值

return father[parentId] == 0 // 如果第一層不是parentId=0,請自行修改

})

},

/**

* 把樹型結構數據轉成扁平數據(跟treeDataformat方法相反)

* @param source

*/

treeDataToCompressed :function (source) {

for(let i in source) {

compressedData.push(source[i]);

source[i].children && source[i].children.length>0 ? this.treeDataToCompressed(source[i].children) : ""// 子級遞歸

}

return compressedData;

},

/**

* 遞歸生成 樹下拉菜單

* @param JsonTree 此參數已經是樹型結構的數據了 如:JsonTree[{"id": "0","value":"測試","children": []}]

* @param typeId

* @param name

* @returns {string}

*/

creatSelectTree : function(JsonTree,typeId,name){//js腳本,遞歸生成 樹下拉菜單

var option="";

for(var i=0;i

if(JsonTree[i].children!= undefined && JsonTree[i].children.length>0){//如果有子集

option+=""+prefix+JsonTree[i][name]+"";

prefix+="|—";//前綴符號加一個符號

option+=this.creatSelectTree(JsonTree[i].children,typeId,name);//遞歸調用子集

prefix=prefix.slice(0,prefix.length-2);//每次遞歸結束返回上級時,前綴符號需要減一個符號

}else{//沒有子集直接顯示

option+=""+prefix+JsonTree[i][name]+"";

}

}

return option;//返回最終html結果

},

/**

* 適用于layer.confirm 動態改變title 多語言切換

* layer.confirm(msg,{titel:'Message'},{btn: ['確定','取消']}, function () {},function () {}) (這樣寫改變title 好像會對后面的回調函數有影響,不信你試試)

* @param title

* @param index

*/

changeLayerTitle: function (title,index) {

return layer.title(title, index)

},

}

})(jQuery);

測試結構:

好的東西就要懂得分享,推薦一個寫的好的博客一個字來形容———厲害!

總結

以上是生活随笔為你收集整理的Java树形转扁平_js把树形数据转成扁平数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。