Espero que alguien me ayude con este Javascript.Javascript: cómo crear dinámicamente objetos anidados utilizando nombres de objetos dados por una matriz
Tengo un objeto llamado "Configuración" y me gustaría escribir una función que agregue nuevas configuraciones a ese objeto.
El nuevo nombre y valor de la 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 "Configuraciones" existente creando 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 ser capaz de referirme a la configuración y, p. alerta su valor Puedo hacer esto de una manera estática como esto ...
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 el número de piezas que componen el nombre de la configuración puede variar, por ejemplo un newSettingName podría ser "Modules_Floorplan_Image_Src", me gustaría hacer esto de forma dinámica utilizando una función como ...
createSetting (newSettingNameArray, newSettingValue);
function createSetting(setting, value) {
// code to create new setting goes here
}
Puede alguien ayudarme a encontrar la manera de hacer esto de forma dinámica?
Supongo que tiene que haber un ... ciclo para iterar a través de la matriz, pero no he podido encontrar la forma de crear los objetos anidados.
Si ha llegado hasta aquí, muchas gracias por tomarse el tiempo para leer, incluso si no puede ayudar.
Bueno, escribió más o menos la misma cosa, excepto que iba a explicar 'newSettingName.split ('_')'. No veo el punto detrás de las respuestas duplicadas, entonces ahí. Sin embargo, tal vez explique mejor su respuesta. – Christian
¿qué son exactamente KeyPath y valor en esa función? –
Excelente. Fui al último valor y, por lo tanto, fallé. Entendido, buscado y encontrado esto. Estar a nivel de padre es la clave y funciona bien. –