簡體   English   中英

我如何在 Angular8 中對 JSON object 進行分組和重組

[英]How can i group and restructure the JSON object in Angular8

我得到以下響應,我想根據現在存在於子級中的buSubRegion對所有數據及其子級進行重新分組。 並且還需要在children之外添加buSubRegion

對於 EX -在下面的響應中, 1UL Africa屬於Africa object並且也存在於歐洲 object內部,所以我需要將屬於1UL Africa的所有對象的子項合並到一個 ZA8CFDE6331BD59EB2AC96F8911C4B66 數組中

我希望 buSubRegion 具有相同的值並且它存在於許多對象中,然后找到所有這些對象並合並為一個。

此外, Agbara - Savoury沒有BU 子區域所以我不想包括這個 object。

誰能幫我實現這一目標。

const data = [
    {
      "name": "Africa",  
      "id":1,    
      "children": [
        {
          "name": "Agbara - Laundry",
          "buSubRegion": "1UL Africa", 
          "children": [
            {
              'lineId':"R_D005_TPKDST02"
            }
        ]        
         
        },
        {
          "name": "Agbara - Savoury",         
          "children": [
            {
              "lineId":"R_D005_TPKDST02"
            }
        ] 
        }
      ]
    },
    {
        "name": "Europe",  
        "id":2,    
        "children": [
          {
            "name": "Europe1",
            "buSubRegion": "1UL Africa",
            "children": [
                {
                  "lineId":"R_D005_TPKDST02"
                }
            ]            
          },
          {
            "name": "Europe2",
            "buSubRegion": "Test Europe",
            "children": [
                {
                  "lineId":"R_D005_TPKDST02"
                }
            ] 
          }
        ]
      },
      {
        "name": "Latem", 
        "id":3,     
        "children": [
          {
            "name": "test1",
            "buSubRegion": "latem1",
            "children": [
                {
                  "lineId":"R_D005_TPKDST02"
                }
            ]           
          }
        ]
      }
  ];

下面是我的預期 Output

[
    {      
      "buSubRegion": "1UL Africa", 
      "name": "Africa",
      "id":1,     
      "children": [
        {
          "name": "Agbara - Laundry",
          "buSubRegion": "1UL Africa",
          "children": [
              {
                "lineId":"R_D005_TPKDST02"
              }
          ] 
        },       
        {
            "name": "Europe1",
            "buSubRegion": "1UL Africa",
            "children": [
                {
                  "lineId":"R_D005_TPKDST02"
                }
            ]            
        }      
      ]
    },
    {        
        "buSubRegion": "Test Europe",
        "name": "Europe", 
        "id":2,  
        "children": [         
          {
            "name": "Europe2",
            "buSubRegion": "Test Europe",
            "children": [
                {
                  "lineId":"R_D005_TPKDST02"
                }
            ] 
          }
        ]
    },
    {
        "name": "Latem", 
        "buSubRegion": "latem1",
        "id":3,     
        "children": [
          {
            "name": "test1",
            "buSubRegion": "latem1",
            "children": [
                {
                  "lineId":"R_D005_TPKDST02"
                }
            ]            
          }
        ]
      }
  ];

您可以使用reduce並通過children 屬性在該循環內按buSubRegion 對數據進行分組。

 const data = [{"name":"Africa","id":1,"children":[{"name":"Agbara - Laundry","buSubRegion":"1UL Africa","children":[{"lineId":"R_D005_TPKDST02"}]},{"name":"Agbara - Savoury","children":[{"lineId":"R_D005_TPKDST02"}]}]},{"name":"Europe","id":2,"children":[{"name":"Europe1","buSubRegion":"1UL Africa","children":[{"lineId":"R_D005_TPKDST02"}]},{"name":"Europe2","buSubRegion":"Test Europe","children":[{"lineId":"R_D005_TPKDST02"}]}]},{"name":"Latem","id":3,"children":[{"name":"test1","buSubRegion":"latem1","children":[{"lineId":"R_D005_TPKDST02"}]}]}]; const result = data.reduce((a,{children, ...rest})=>{ children.forEach(({buSubRegion,...others})=>{ if(buSubRegion){ a[buSubRegion]??= {buSubRegion, ...rest, children:[]}; a[buSubRegion].children.push({buSubRegion, ...others}) } }); return a; },{}); console.log(Object.values(result));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM