Ich denke, das muss ein häufiges Problem sein, aber scheint nicht die Lösung zu finden. Verwenden von JSON-Konfigurationsdateien zum Erweitern eines jQuery-Objekts, das Objekte und Arrays enthält.Ändern von jQuery erweitern, um Array-Elemente innerhalb von Objekten zu schieben, aber andere Objekte zu erweitern
Für die Objekte und einfache Eigenschaften möchte ich überschreiben (wie extend
tut gut).
Für die Arrays können möglicherweise vorhandene Elemente vorhanden sein oder nicht.
Zeit ein Array überschreibt nur die ersten Elemente
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);
Das gibt:
{propterty:"New Val" , anArray:[{name:"third"},{name:"second"}}
Kann ich stattdessen bekommen:
{propterty:"New Val",anArray:[{name:"first"},{name:"second"},{name:"third"}]}
während ALSO erlaubt, "erste" und "zweite" Objekte zu aktualisieren?
"anArray":[{"name":"second","newProp":"add newProp to second"}]
könnte/sollte extend
modifiziert werden Array-Elemente zu vergleichen und erweitern oder auf irgendeiner Regel oder Set-Eigenschaftswert wie „name“ hinzufügen?
Vielen Dank für Rat oder Hinweise.
Dies scheint die am nächsten zu sein, die ich gefunden habe, die es tun könnte - http://stackoverflow.com/questions/3748697/jquery-extend-arra y-of-objects –
Die normale Verwendung von '$ .extend' dient zum Zusammenführen von benutzerdefinierten Optionen mit Standardwerten. In diesem Fall empfiehlt es sich in der Regel, dass eine neue Eigenschaft die im ursprünglichen Objekt vollständig ersetzt. Das Anhängen von Array-Eigenschaften passt nicht zu der Art und Weise, wie sie normalerweise verwendet wird. Wofür brauchst du das? – Barmar
@Barmar wahr, das ist ein Anwendungsfall, aber es gibt viele andere ... einschließlich Erweiterung neuer Funktionen/Methoden zu jQuery-Objekt selbst – charlietfl