これは一般的な問題ではあるが解決策を見つけることができないと考えている。 JSON設定ファイルを使用して、オブジェクトと配列を含むjQueryオブジェクトを拡張します。jQueryを修正すると、オブジェクト内の配列アイテムがプッシュされますが、他のオブジェクトが拡張されます
オブジェクトと単純なプロパティについては、(extend
がうまくいけば)上書きしたいです。
アレイの場合、既存のアイテムが存在する場合と存在しない場合があります。
現在のアレイは、単に最初の要素
var sourceObj = {propterty:"change Me",anArray:[{name:"first"},{name:"second"}]},
configJSON = '{"propterty":"New Val","anArray":[{"name":"third"}]}',
configObj = JSON.parse(configJSON);
$.extend(true,sourceObj,configObj);
を上書きこれが返されます。
{propterty:"New Val" , anArray:[{name:"third"},{name:"second"}}
私が代わりに取得することができます。
{propterty:"New Val",anArray:[{name:"first"},{name:"second"},{name:"third"}]}
ALSOは "最初の"オブジェクトと "2番目の"オブジェクトを更新できますか?
"anArray":[{"name":"second","newProp":"add newProp to second"}]
は/ extend
配列アイテムを比較して拡張したり、そのような「名前」などのいくつかのルールに基づいて、または設定されたプロパティ値を追加するように修正されなければならないだろうか?
アドバイスや参考に感謝します。重複がクリーンアップする必要がありますするアレイ上の私はjqueryのマージに追加
これは私がそれを行う可能性があることがわかりました最も近いように思わ - http://stackoverflow.com/questions/3748697/jquery-extend-arra y-of-objects –
'$ .extend'の通常の使用は、ユーザ指定のオプションをデフォルトとマージするためのものです。この場合、通常、元のオブジェクト内のプロパティを新しいプロパティで完全に置き換えるのが最善です。配列プロパティを追加することは、一般に使用されている方法には合いません。これは何のために必要なのですか? – Barmar
@Barmar jQueryオブジェクト自体に新しい関数/メソッドを拡張することを含む、他の多くのものがあります。 – charlietfl