简体   繁体   中英

Remove/Filter object on basis of key-value combination from object

How to filter out an object from an large object on basis of certain value of one of the property.

defaultSettings = {    
'header1': {
    key: '00_02',
    element: {
        'test1': '',                        
    },
    elementName: 'footer'
},    
'enabled': {},    
'header2': [
    {
        key: '',
        value: {
            msg1: {},
            msg2: 'message2',                
        },
        elementName: 'unwanted-element1'
    }       
],
'header3': {        
    info: '',        
    headline: ''
},        
};

I want to remove the object where elementName: 'unwanted-element1' from defaultSettings

I am trying something like

for (let key of Object.keys(defaultSettings)) {                        
    if(key === 'header2'){
        if(key['elementName'] == 'unwanted-element1' ){
            //delete that particular object.
        }
    }
}
console.log(defaultSettings);

Output expected:

{    
'header1': {
    key: '00_02',
    element: {
        'test1': '',                        
    },
    elementName: 'footer'
},    
'enabled': {},    
'header2': [],
'header3': {        
    info: '',        
    headline: ''
},        
}

Kindly suggest better approach to achieve this.

defaultSettings['header2'] = defaultSettings['header2'].filter(prop => prop.elementName != 'unwanted-element1');

So here I am filtering the header2 by not including the unwanted-element1 and assigning the result to defaultSettings again.

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