How to remove undefined and null values from an object using lodash?

前端 未结 23 2333
既然无缘
既然无缘 2020-11-29 18:06

I have a Javascript object like:

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

How to remove all the undefined properties? False

23条回答
  •  借酒劲吻你
    2020-11-29 18:12

    With lodash (or underscore) You may do

    var my_object = { a:undefined, b:2, c:4, d:undefined, e:null };
    
    var passedKeys = _.reject(Object.keys(my_object), function(key){ return _.isUndefined(my_object[key]) || _.isNull(my_object[key]) })
    
    newObject = {};
    _.each(passedKeys, function(key){
        newObject[key] = my_object[key];
    });
    

    Otherwise, with vanilla JavaScript, you can do

    var my_object = { a:undefined, b:2, c:4, d:undefined };
    var new_object = {};
    
    Object.keys(my_object).forEach(function(key){
        if (typeof my_object[key] != 'undefined' && my_object[key]!=null){
            new_object[key] = my_object[key];
        }
    });
    

    Not to use a falsey test, because not only "undefined" or "null" will be rejected, also is other falsey value like "false", "0", empty string, {}. Thus, just to make it simple and understandable, I opted to use explicit comparison as coded above.

提交回复
热议问题