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

2022-08-30 00:57:00

我有一个Javascript对象,比如:

var my_object = { a:undefined, b:2, c:4, d:undefined };

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


答案 1

您可以简单地链接 和 组合,并通过延迟计算获得结果。_.omit()_.isUndefined_.isNull

演示

var result = _(my_object).omit(_.isUndefined).omit(_.isNull).value();

2016 年 3 月 14 日更新

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

演示

var result = _(my_object).omitBy(_.isUndefined).omitBy(_.isNull).value();

2016 年 6 月 1 日更新

正如Max Truxa所评论的那样,lodash已经提供了一个替代的_.isNil,它可以检查和:nullundefined

var result = _.omitBy(my_object, _.isNil);

答案 2

如果要删除所有错误值,则最紧凑的方法是:

对于 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}