有没有一种干净的方法可以从对象中删除未定义的字段?
i.e.
> var obj = { a: 1, b: undefined, c: 3 }
> removeUndefined(obj)
{ a: 1, c: 3 }
我遇到了两种解决方案:
_.each(query, function removeUndefined(value, key) {
if (_.isUndefined(value)) {
delete query[key];
}
});
or:
_.omit(obj, _.filter(_.keys(obj), function(key) { return _.isUndefined(obj[key]) }))
一行使用ES6箭头函数和三元运算符:
Object.keys(obj).forEach(key => obj[key] === undefined ? delete obj[key] : {});
Or use 短路评估而不是三元:(@Matt Langlois,感谢您的信息!)
Object.keys(obj).forEach(key => obj[key] === undefined && delete obj[key])
使用 if 语句的相同示例:
Object.keys(obj).forEach(key => {
if (obj[key] === undefined) {
delete obj[key];
}
});
如果您还想从嵌套对象中删除项目,您可以使用递归的功能:
const removeEmpty = (obj) => {
let newObj = {};
Object.keys(obj).forEach((key) => {
if (obj[key] === Object(obj[key])) newObj[key] = removeEmpty(obj[key]);
else if (obj[key] !== undefined) newObj[key] = obj[key];
});
return newObj;
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)