is it possible to get a reference to an object with the object itself
obj
and the attributes in string form
'address.town.street'
so that at the end it resolves
obj.address.town.street
i could immageine smth like the eval() function.
is it possible to get a reference to an object with the object itself
obj
and the attributes in string form
'address.town.street'
so that at the end it resolves
obj.address.town.street
i could immageine smth like the eval() function.
Try
function getValue(obj, path) {
return path.split(".").reduce(function(obj, name){ return obj[name]}, obj);
}
town is null or undefined, this will throw an exception. If you have to add null-checking it gets significantly more complicated.return obj&&obj[name] will almost do the trick. It will return false if path element was falsy.null): path.split(".").reduce((obj, key) => obj && obj[key] || null, obj);Do not use eval. Use this instead
Object.prototype.nestedByString=function(reference){
var current=this;
path=reference.split(".");
for(var i=0;i<path.length;i++){
current=current[path[i]];
}
return current;
}
Here is a demo
I suppose that if you're allergic to extending native prototypes, you can do this
function nestedByString(obj,reference){
var current=obj;
path=reference.split(".");
for(var i=0;i<path.length;i++){
current=current[path[i]];
}
return current;
}
Object.prototype.for-in loops without .hasOwnProperty checking.Object.defineProperty(Object.prototype, 'nestedByString', {value: function(){/*blah*/}, enumerable: false})