Подтвердить что ты не робот

Как расширить объект при игнорировании нулевых значений?

Скажем, например, у меня есть объект

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
};

Мой вопрос будет в том, как я могу получить метод расширения, чтобы не переопределять нулевые значения? Например, в этом случае, как я могу получить список хобби, если список хостов для пользователей равен нулю, поэтому я получаю следующее

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

Ответ 1

Вы можете использовать undefined как значение, которое будет игнорироваться jQuery.extend.

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