Ich hoffe, jemand kann mir mit diesem Javascript helfen.
Ich habe ein Objekt namens "Einstellungen" und möchte eine Funktion schreiben, die diesem Objekt neue Einstellungen hinzufügt.
Der Name und der Wert der neuen Einstellung werden als Zeichenfolgen bereitgestellt. Die Zeichenfolge mit dem Namen der Einstellung wird dann durch die Unterstriche in ein Array aufgeteilt. Die neue Einstellung sollte zum vorhandenen Objekt "Einstellungen" hinzugefügt werden, indem neue verschachtelte Objekte mit den Namen erstellt werden, die von jedem Teil des Arrays angegeben werden, mit Ausnahme des letzten Teils, der eine Zeichenfolge sein sollte, die den Wert der Einstellung angibt. Ich sollte dann in der Lage sein, mich auf die Einstellung zu beziehen und zB ihren Wert zu alarmieren. Ich kann das so statisch machen ...
var Settings = {};
var newSettingName = "Modules_Video_Plugin";
var newSettingValue = "JWPlayer";
var newSettingNameArray = newSettingName.split("_");
Settings[newSettingNameArray[0]] = {};
Settings[newSettingNameArray[0]][newSettingNameArray[1]] = {};
Settings[newSettingNameArray[0]][newSettingNameArray[1]][newSettingNameArray[2]] = newSettingValue;
alert(Settings.Modules.Mediaplayers.Video.Plugin);
... der Teil, der die verschachtelten Objekte erstellt, tut dies ...
Settings["Modules"] = {};
Settings["Modules"]["Video"] = {};
Settings["Modules"]["Video"]["Plugin"] = "JWPlayer";
Da jedoch die Anzahl der Teile, aus denen der Einstellungsname besteht, variieren kann, z. B. könnte ein neuer Einstellungsname "Modules_Floorplan_Image_Src" sein, möchte ich dies dynamisch mithilfe einer Funktion wie ...
createSetting (newSettingNameArray, newSettingValue);
function createSetting(setting, value) {
// code to create new setting goes here
}
Kann mir jemand helfen, wie ich das dynamisch machen kann?
Ich nehme an, dass es dort eine for ... -Schleife geben muss, um durch das Array zu iterieren, aber ich konnte keinen Weg finden, um die verschachtelten Objekte zu erstellen.
Wenn Sie so weit gekommen sind, vielen Dank, dass Sie sich die Zeit zum Lesen genommen haben, auch wenn Sie nicht anders können.
newSettingName.split('_')
. Ich sehe keinen Sinn hinter doppelten Antworten, also da. Vielleicht erklären Sie Ihre Antwort besser.