Javascript: cómo crear dinámicamente objetos anidados utilizando nombres de objetos dados por una matriz

Espero que alguien pueda ayudarme con este Javascript.

Tengo un Objeto llamado "Configuración" y me gustaría escribir una función que agregue nuevas configuraciones a ese objeto.

El nombre y el valor de la nueva configuración se proporcionan como cadenas. La cadena que da el nombre de la configuración se divide por los guiones bajos en una matriz. La nueva configuración debe agregarse al objeto existente "Configuración" mediante la creación de nuevos objetos anidados con los nombres dados por cada parte de la matriz, excepto la última parte, que debe ser una cadena que proporcione el valor de la configuración. Entonces debería poder referirme a la configuración y p. alerta su valor. Puedo hacer esto de una manera estática como esta ...

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

... la parte que crea los objetos anidados está haciendo esto ...

Settings["Modules"] = {};
Settings["Modules"]["Video"] = {};
Settings["Modules"]["Video"]["Plugin"] = "JWPlayer";

Sin embargo, como la cantidad de partes que componen el nombre de la configuración puede variar, p. un newSettingName podría ser "Modules_Floorplan_Image_Src", me gustaría hacerlo dinámicamente utilizando una función como ...

createSetting (newSettingNameArray, newSettingValue);

function createSetting(setting, value) {
    // code to create new setting goes here
}

¿Alguien puede ayudarme a resolver cómo hacer esto dinámicamente?

Supongo que tiene que haber un bucle for ... para iterar a través de la matriz, pero no he podido encontrar una manera de crear los objetos anidados.

Si has llegado hasta aquí, muchas gracias por tomarte el tiempo de leer, incluso si no puedes ayudar.

Respuestas a la pregunta(17)

Su respuesta a la pregunta