12

たとえば、私は次のオブジェクトを持っているとしましょう

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

2つのオブジェクトにマージする最も簡単な方法は、次のようにベースオブジェクトをユーザーオブジェクトで拡張することです。

$.extend(true, base, user);

ベースオブジェクトを次のように変更します

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

私の質問は、null値をオーバーライドしないようにextendメソッドを取得するにはどうすればよいですか?たとえば、この場合、ユーザーの趣味リストがnullの場合でも、どうすれば趣味のリストを取得できるので、次のようになります。

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

1 に答える 1

23

undefinedによって無視される値として使用できますjQuery.extend

var user = { "Name": "Dan", 
             "Age:" 27, 
             "Hobbies": undefined 
           };
$.extend(true, base, user);
于 2012-05-21T14:56:04.793 に答える