Write Data To A Nested Dictionary Given A "key Path" Of Unknown Length
I have a file for my app that holds (in a dictionary) general info about the app EG the settings. The main dictionary is: 'info': {} to write to the file, my write function takes
Solution 1:
If you have a JSON object and a key-path:
functionupdateSettings(settings, keyPath, value) {
const keys = keyPath.split('.');
const targetKey = keys.pop();
let current = settings;
for (let i = 0; i < keys.length; ++i) {
current = current[keys[i]];
if (!current) {
thrownewError('Specified key not found. ' + keys[i]);
}
}
current[targetKey] = value;
// return settings; // optional, because it changes settings object directly
}
const settings = {
root: 0,
settings: {
appearance: 'light'
},
some: {
very: {
very: {
nested: {
value: 1
}
}
}
}
};
updateSettings(settings, 'settings.appearance', 'dark');
updateSettings(settings, 'root', 1024);
updateSettings(settings, 'some.very.very.nested.value', 2048);
the output is:
{
root:1024,
settings: {
appearance:'dark'
},
some: {
very: {
very: {
nested: {
value:2048
}
}
}
}
};
Some libraries (e.g. lodash _.get) have implementation methods for this.
Post a Comment for "Write Data To A Nested Dictionary Given A "key Path" Of Unknown Length"