[英]Remove undefined properties from object
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));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.