删除未定义(非空)

时间:2018-02-20 12:32:30

标签: javascript lodash

我正在使用Lodash库,我需要从我的javascript对象中删除可能的未定义属性,但我想保留null属性。

例如,如果我有这样的对象:

var fooObject = {propA:undefined, propB:null, propC:'fooo'};

我希望输出如下:

{propB:null, propC:'fooo'}

我试过了:

.pickBy(fooObject, _.identity);

但它也会删除空值。 Lodash是否包含一些功能?感谢。

4 个答案:

答案 0 :(得分:1)

返回任何非_.isUndefined的内容:

_.pickBy({propA:undefined, propB:null, propC:'fooo'}, function(val){
     return !_.isUndefined(val);
});

甚至更好:

_.omitBy({propA:undefined, propB:null, propC:'fooo'}, _.isUndefined);

答案 1 :(得分:1)

尝试:

_.pickBy(fooObject, v => v !== undefined)

答案 2 :(得分:0)

尝试使用.omitBy方法。

对于未定义和空值。

_.isUndefined_.isNull

 var fooObject = {propA:undefined, propB:null, propC:'fooo'};

从对象

中删除undefined
var newObj= _(fooObject).omitBy(_.isUndefined).value();
 console.log(newObj);

包括,如果您要同时删除undefinednull

var result = _(fooObject).omitBy(_.isUndefined).omitBy(_.isNull).value();
console.log(result);

希望这会有所帮助..!

答案 3 :(得分:-1)

//简单的javascript

var fooObject = {propA:undefined, propB:null, propC:'fooo'};

for(var prop in fooObject)
{
if(fooObject[prop]===undefined)
delete fooObject[prop];
}
console.log(fooObject);