1. 程式人生 > 其它 >js遞迴迴圈——將已有的資料處理生成一個新的資料

js遞迴迴圈——將已有的資料處理生成一個新的資料

場景:

以下為已有資料,過濾掉資料中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));