简体   繁体   中英

How do I group array of objects and get rid of repeating attributes?

I have below array and I want to get rid of duplicates

 "additionalTabs": {
        "Cost Tab 2": [
            {
                "entityID": 1,
                "tabID": 2,
                "sequenceNo": 1,
                "isApproved": 0
            },
            {
                "entityID": 2,
                "tabID": 2,
                "sequenceNo": 1,
                "isApproved": 0
            },
            {
                "entityID": 3,
                "tabID": 2,
                "sequenceNo": 1,
                "isApproved": 0
            },
            {
                "entityID": 2469,
                "tabID": 2,
                "sequenceNo": 1,
                "isApproved": 1
            }
        ],
        "cost tab 4": [
            {
                "entityID": 3867,
                "tabID": 53,
                "sequenceNo": 4,
                "isApproved": 0
            },
            {
                "entityID": 3982,
                "tabID": 53,
                "sequenceNo": 4,
                "isApproved": 0
            },
            {
                "entityID": 4500,
                "tabID": 53,
                "sequenceNo": 4,
                "isApproved": 0
            }
        ]
    }

In expected new array I want to get rid of repeated attributes like tabID and sequenceNo under objects Cost Tab 2 and cost tab 4. Any help will be appreciated. Thank you

Try this:

// Your original data
const additionalTabs = {
        "Cost Tab 2": [
            {
                "entityID": 1,
                "tabID": 2,
                "sequenceNo": 1,
                "isApproved": 0
            },
            {
                "entityID": 2,
                "tabID": 2,
                "sequenceNo": 1,
                "isApproved": 0
            },
            {
                "entityID": 3,
                "tabID": 2,
                "sequenceNo": 1,
                "isApproved": 0
            },
            {
                "entityID": 2469,
                "tabID": 2,
                "sequenceNo": 1,
                "isApproved": 1
            }
        ],
        "cost tab 4": [
            {
                "entityID": 3867,
                "tabID": 53,
                "sequenceNo": 4,
                "isApproved": 0
            },
            {
                "entityID": 3982,
                "tabID": 53,
                "sequenceNo": 4,
                "isApproved": 0
            },
            {
                "entityID": 4500,
                "tabID": 53,
                "sequenceNo": 4,
                "isApproved": 0
            }
        ]
    }

// Example code to run through your object and delete the unwanted properties
const result = Object.entries(additionalTabs)
    .reduce((prev, item)=>({
    ...prev,
    [item[0]]:item[1].map(tabItem=>{
      const newTabItem = {
        ...tabItem,
      }
      delete newTabItem.tabID
      delete newTabItem.sequenceNo
      return newTabItem
    })
  }),{})

result

The result:

{
  'Cost Tab 2': [
    { entityID: 1, isApproved: 0 },
    { entityID: 2, isApproved: 0 },
    { entityID: 3, isApproved: 0 },
    { entityID: 2469, isApproved: 1 }
  ],
  'cost tab 4': [
    { entityID: 3867, isApproved: 0 },
    { entityID: 3982, isApproved: 0 },
    { entityID: 4500, isApproved: 0 }
  ]
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM