首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用存档从对象中删除未定义和空值?

如何使用存档从对象中删除未定义和空值?
EN

Stack Overflow用户
提问于 2015-06-12 21:58:25
回答 27查看 268.2K关注 0票数 231

我有一个Javascript对象,类似:

代码语言:javascript
运行
复制
var my_object = { a:undefined, b:2, c:4, d:undefined };

如何删除所有未定义的属性?错误属性应该保留。

EN

回答 27

Stack Overflow用户

回答已采纳

发布于 2015-10-30 09:41:01

如果您想要删除所有https://stackoverflow.com/a/19839953/16940值,那么最紧凑的方法是:

用于Lodash 4.x和更高版本的

代码语言:javascript
运行
复制
_.pickBy({ a: null, b: 1, c: undefined }, _.identity);
>> Object {b: 1}

对于遗留的Lodash 3.x:

代码语言:javascript
运行
复制
_.pick(obj, _.identity);

_.pick({ a: null, b: 1, c: undefined }, _.identity);
>> Object {b: 1}
票数 256
EN

Stack Overflow用户

发布于 2015-07-03 14:36:21

您可以简单地将_.omit()_.isUndefined_.isNull组合链接起来,并通过惰性评估获得结果。

演示

代码语言:javascript
运行
复制
var result = _(my_object).omit(_.isUndefined).omit(_.isNull).value();

更新2016年3月14日

正如尖锐湿疣在注释部分中提到的,您应该使用_.omitBy()函数,因为它使用谓词而不是属性。您应该将其用于提交版本的4.0.0和更高版本。

演示

代码语言:javascript
运行
复制
var result = _(my_object).omitBy(_.isUndefined).omitBy(_.isNull).value();

更新2016年6月1日

正如马克斯特鲁卡所评论的那样,lodash已经提供了另一个_.isNil,它同时检查nullundefined

代码语言:javascript
运行
复制
var result = _.omitBy(my_object, _.isNil);
票数 311
EN

Stack Overflow用户

发布于 2019-03-15 14:49:41

正确的答案是:

代码语言:javascript
运行
复制
_.omitBy({ a: null, b: 1, c: undefined, d: false }, _.isNil)

其结果是:

代码语言:javascript
运行
复制
{b: 1, d: false}

其他人在此提出的替代办法:

代码语言:javascript
运行
复制
_.pickBy({ a: null, b: 1, c: undefined, d: false }, _.identity);

还将删除此处不需要的false值。

票数 55
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30812765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档