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

比方说,我有一个对象

var user = { "Name": "Dan", "Age": 27, "Hobbies": null }; 

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

 var base = { "Name": null, "Height": null, "Age": null, "Hobbies": [ { "Name": "Tennis", "Location": null }, { "Name": "Football", "Location": null }, { "Name": "Rugby", "Location": null } ] }; 

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

 $.extend(true, base, user); 

这将修改基础对象

 { "Name": "Dan", "Height": null, "Age": 27, "Hobbies": null }; 

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

 { "Name": "Dan", "Height": null, "Age": 27, "Hobbies": [ { "Name": "Tennis", "Location": null }, { "Name": "Football", "Location": null }, { "Name": "Rugby", "Location": null } ] }; 

您可以使用undefined作为jQuery.extend将忽略的值。

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