我有一个Javascript对象,类似:
var my_object = { a:undefined, b:2, c:4, d:undefined };如何删除所有未定义的属性?错误属性应该保留。
发布于 2015-10-30 09:41:01
如果您想要删除所有https://stackoverflow.com/a/19839953/16940值,那么最紧凑的方法是:
用于Lodash 4.x和更高版本的
_.pickBy({ a: null, b: 1, c: undefined }, _.identity);
>> Object {b: 1}对于遗留的Lodash 3.x:
_.pick(obj, _.identity);
_.pick({ a: null, b: 1, c: undefined }, _.identity);
>> Object {b: 1}发布于 2015-07-03 14:36:21
您可以简单地将_.omit()与_.isUndefined和_.isNull组合链接起来,并通过惰性评估获得结果。
演示
var result = _(my_object).omit(_.isUndefined).omit(_.isNull).value();更新2016年3月14日
正如尖锐湿疣在注释部分中提到的,您应该使用_.omitBy()函数,因为它使用谓词而不是属性。您应该将其用于提交版本的4.0.0和更高版本。
演示
var result = _(my_object).omitBy(_.isUndefined).omitBy(_.isNull).value();更新2016年6月1日
正如马克斯特鲁卡所评论的那样,lodash已经提供了另一个_.isNil,它同时检查null和undefined
var result = _.omitBy(my_object, _.isNil);发布于 2019-03-15 14:49:41
正确的答案是:
_.omitBy({ a: null, b: 1, c: undefined, d: false }, _.isNil)其结果是:
{b: 1, d: false}其他人在此提出的替代办法:
_.pickBy({ a: null, b: 1, c: undefined, d: false }, _.identity);还将删除此处不需要的false值。
https://stackoverflow.com/questions/30812765
复制相似问题