如何在忽略空值的同时扩展对象?

Dan*_*ter 11 javascript jquery

比方说,我有一个对象

var user = { 
    "Name": "Dan", 
    "Age": 27, 
    "Hobbies": null 
};
Run Code Online (Sandbox Code Playgroud)

我想合并到下面的基础对象,以便我的用户对象将具有所有必需的属性

var base = { 
    "Name": null, 
    "Height": null, 
    "Age": null, 
    "Hobbies": [
        { "Name": "Tennis", "Location": null },
        { "Name": "Football", "Location": null },
        { "Name": "Rugby", "Location": null }
    ]
};
Run Code Online (Sandbox Code Playgroud)

合并到两个对象的最简单方法是使用用户对象扩展基础对象,如下所示

$.extend(true, base, user);
Run Code Online (Sandbox Code Playgroud)

这将修改基础对象

{ 
    "Name": "Dan", 
    "Height": null, 
    "Age": 27, 
    "Hobbies": null
};
Run Code Online (Sandbox Code Playgroud)

我的问题是如何让extend方法不覆盖空值?例如,在这个例子中,如果用户爱好列表为空,我怎么还能获得爱好列表所以我最终得到以下内容

{ 
    "Name": "Dan", 
    "Height": null, 
    "Age": 27, 
    "Hobbies": [
        { "Name": "Tennis", "Location": null },
        { "Name": "Football", "Location": null },
        { "Name": "Rugby", "Location": null }
    ]
};
Run Code Online (Sandbox Code Playgroud)

God*_*esZ 23

您可以使用undefined将被忽略的值jQuery.extend.

var user = { "Name": "Dan", 
             "Age:" 27, 
             "Hobbies": undefined 
           };
$.extend(true, base, user);
Run Code Online (Sandbox Code Playgroud)