I would like to recursively clean any fields which are undefined, or have an empty object as parent like this following:
Example:
{
"a": {
"b": {
"c": undefined,
}
},
"d": undefined,
"e": {
f: undefined,
},
"g": {
"h": 'I',
"j": undefined,
},
"k": "L",
"m": {
"n": {
"o": {
"z": undefined,
}
},
"p": 'toto'
}
}
I am expecting the following result :
{
"g": {
"h": 'I',
},
"k": 'L',
"m": {
"p": 'toto'
}
}
Thank you for your help
function filter(obj) { for (var key in obj) { if (obj[key] === undefined) { delete obj[key]; continue; } if (obj[key] && typeof obj[key] === "object") { filter(obj[key]); if (!Object.keys(obj[key]).length) { delete obj[key]; } } } return obj; } var data = { "a": { "b": { "c": undefined, } }, "d": undefined, "e": { "f": undefined, }, "g": { "h": 'I', "j": undefined, }, "k": "L", "m": { "n": { "o": { "z": undefined, } }, "p": 'toto' } }; console.log(filter(data));
Simply delete these keys and iterate recursively.
function cleanArray(actual) { var newArray = new Object(); newArray=JSON.parse(JSON.stringify(actual)); return newArray; } var obj={ "a": { "b": { "c": undefined, } }, "d": undefined, "e": { f: undefined, }, "g": { "h": 'I', "j": undefined, }, "k": "L", "m": { "n": { "o": { "z": undefined, } }, "p": 'toto' } }; console.log(cleanArray(obj));
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.