js遞迴迴圈——將已有的資料處理生成一個新的資料
阿新 • • 發佈:2021-06-17
場景:
以下為已有資料,過濾掉資料中selectedStatus為false的資料,並生成一組新資料(注意:不能在原資料中進行操作)
let treeData = [ { level: 0, parent_id: 0, name: "員工管理", id: 2, status: 1, selectedStatus:true, child: [ { level: 1, parent_id: 2, name:"辦理入職", id: 3, status: 1, selectedStatus:false, child: [ { level: 2, parent_id: 3, name: "直接辦理入職", id: 4, status:1, selectedStatus:false, child:[] }, ] }, { level: 1, parent_id: 2, name: "轉正管理", id: 5, status: 1, selectedStatus:true, child: [ { level: 2, parent_id: 5, name: "辦理轉正", id: 6, status: 1, selectedStatus:true, child:[] } ] } ] },{ level: 0, parent_id: 0, name: "員工管理", id: 2, status: 1, selectedStatus:false, },{ level: 0, parent_id: 0, name: "員工管理", id: 2, status: 1, selectedStatus:true, child: [ { level: 1, parent_id: 2, name: "辦理入職", id: 3, status: 1, selectedStatus:false, child:[] }, { level: 1, parent_id: 2, name: "轉正管理", id: 5, status: 1, selectedStatus:true, child: [ { level: 2, parent_id: 5, name: "辦理轉正", id: 6, status: 1, selectedStatus:true, child:[] },{ level: 2, parent_id: 5, name: "辦理轉正", id: 7, status: 1, selectedStatus:true, child:[] },{ level: 2, parent_id: 5, name: "辦理轉正", id: 8, status: 1, selectedStatus:true, child:[] } ] } ] }, ]
實現方式:
turn_format(list){
//此處將資料轉為json,然後再轉為物件,是為了避免操作原資料 let list_json = JSON.stringify(list); let arr = JSON.parse(list_json) returnarr.filter((item)=>{ if(!item.selectedStatus){ returnfalse; }else{ if(item.child){ item.child=this.turn_format(item.child); delete item.selectedStatus }else{ delete item.selectedStatus } returntrue; } }); } //檢視過濾後的資料 console.log(this.turn_format(treeData));