const object = { key1: 'example_key1', key2: { key3: 'example_key2' } } const string = 'key1' const array = ['key2', 'key3'] object[string] = 'foo' // Work object[array] = 'bar' // Dont work
How can I access and change the object with the array of keys?
I have tried loadash.get
but it can only get values not change them.
Advertisement
Answer
You need to do something like the following:
function set(obj, path, value) { var schema = obj var len = path.length for(var i = 0; i < len - 1; i++) { var elem = path[i] if (!schema[elem] ) schema[elem] = {} schema = schema[elem] } schema[path[len-1]] = value }
And then you could use it in the following way:
set(object, array, 'someText')
With a function like the above set
you can update an object passing an array of nested keys and the new value.