Search code examples
javascriptreactjsarraysobjectjavascript-objects

How to remove key value pair from an object having values as another array of objects?


Here I have created a data based on my backend get call response. So I came across usecase where my data have to match with my backend data type.

The data I have generated looks like this:

var valGroup = {
    "Tier1": [
        {
            "DE": 0,
            "CreditRange": "0",
            "VintageCriteria": [],
            "DBR": 0,
            "NetsalesCriteria": [],
            "ABBmultiplier": 0,
            "BTO": 0,
            "MUE": [],
            "TurnoverCriteria": 0,
            "DSCR": 0,
            "category": "Tier1"
        },
        {
            "DE": 0,
            "CreditRange": "0",
            "VintageCriteria": [],
            "DBR": 0.8,
            "NetsalesCriteria": [],
            "ABBmultiplier": 0,
            "BTO": 0,
            "MUE": [],
            "TurnoverCriteria": 0,
            "DSCR": 0,
            "category": "Tier1"
        }
    ],
    "Tier2": [
        {
            "DE": 0,
            "CreditRange": "0",
            "VintageCriteria": [],
            "DBR": 0,
            "NetsalesCriteria": [],
            "ABBmultiplier": 0,
            "BTO": 0,
            "MUE": [],
            "TurnoverCriteria": 0,
            "DSCR": 0,
            "category": "Tier2"
        },
        {
            "DE": 0,
            "CreditRange": "",
            "VintageCriteria": [],
            "DBR": 0,
            "NetsalesCriteria": [],
            "ABBmultiplier": 0,
            "BTO": 0,
            "MUE": [],
            "TurnoverCriteria": 0,
            "DSCR": 0,
            "category": "Tier2"
        }
    ]
}

Here from the above mentioned data I have to remove the "category" key value pair like this:

var valGroup = {
    "Tier1": [
        {
            "DE": 0,
            "CreditRange": "0",
            "VintageCriteria": [],
            "DBR": 0,
            "NetsalesCriteria": [],
            "ABBmultiplier": 0,
            "BTO": 0,
            "MUE": [],
            "TurnoverCriteria": 0,
            "DSCR": 0
        },
        {
            "DE": 0,
            "CreditRange": "0",
            "VintageCriteria": [],
            "DBR": 0.8,
            "NetsalesCriteria": [],
            "ABBmultiplier": 0,
            "BTO": 0,
            "MUE": [],
            "TurnoverCriteria": 0,
            "DSCR": 0
        }
    ],
    "Tier2": [
        {
            "DE": 0,
            "CreditRange": "0",
            "VintageCriteria": [],
            "DBR": 0,
            "NetsalesCriteria": [],
            "ABBmultiplier": 0,
            "BTO": 0,
            "MUE": [],
            "TurnoverCriteria": 0,
            "DSCR": 0
        },
        {
            "DE": 0,
            "CreditRange": "",
            "VintageCriteria": [],
            "DBR": 0,
            "NetsalesCriteria": [],
            "ABBmultiplier": 0,
            "BTO": 0,
            "MUE": [],
            "TurnoverCriteria": 0,
            "DSCR": 0
        }
    ]
}

I tried something with Object.keys and going through my object's key and index but can't delete that key/value pair. Is there any other approach by which I can get the required data?


Solution

  • Since you mentioned that you tried that with object.keys() ... here is a solution how that would look like:

    var valGroup = {
        "Tier1": [
            {
                "DE": 0,
                "CreditRange": "0",
                "VintageCriteria": [],
                "DBR": 0,
                "NetsalesCriteria": [],
                "ABBmultiplier": 0,
                "BTO": 0,
                "MUE": [],
                "TurnoverCriteria": 0,
                "DSCR": 0,
                "category": "Tier1"
            },
            {
                "DE": 0,
                "CreditRange": "0",
                "VintageCriteria": [],
                "DBR": 0.8,
                "NetsalesCriteria": [],
                "ABBmultiplier": 0,
                "BTO": 0,
                "MUE": [],
                "TurnoverCriteria": 0,
                "DSCR": 0,
                "category": "Tier1"
            }
        ],
        "Tier2": [
            {
                "DE": 0,
                "CreditRange": "0",
                "VintageCriteria": [],
                "DBR": 0,
                "NetsalesCriteria": [],
                "ABBmultiplier": 0,
                "BTO": 0,
                "MUE": [],
                "TurnoverCriteria": 0,
                "DSCR": 0,
                "category": "Tier2"
            },
            {
                "DE": 0,
                "CreditRange": "",
                "VintageCriteria": [],
                "DBR": 0,
                "NetsalesCriteria": [],
                "ABBmultiplier": 0,
                "BTO": 0,
                "MUE": [],
                "TurnoverCriteria": 0,
                "DSCR": 0,
                "category": "Tier2"
            }
        ]
    }
    
    const result = Object.fromEntries([
        ...Object.keys(valGroup)
            .map(key => [key, valGroup[key].map(({category, ...rest}) => rest)])
    ])
    
    console.log(result);