How To Convert A String Containing Dots To A Property Accessor In Javascript?
For example, if I have a string: var foo = 'a.b.c'; ... and Object: var bar = { a: { b: { c: null } } } How ca
Solution 1:
Here's one of those not so simple or consistent ways
var bar = {
a: {
b: {
c: 'test'
}
}
}
var foo = 'a.b.c',
arr = foo.split('.'),
o = bar;
arr.forEach(function(key, i) {
if (i === arr.length-1) {
o[key] = 'Hello World'
}else{
o = o[key];
}
});
Solution 2:
Another possible solution is to use eval, but it is unsafe and mostly discouraged:
var foo = "a.b.c";
var bar = {
a: {
b: {
c: null
}
}
}
eval("bar." + foo + " = 'Hello World'; ");
alert(bar.a.b.c);
Solution 3:
Another example with a small function (DEMO):
functionsetVal(obj, accessors, val) {
var parts = accessors.split('.');
for(var i = 0; i < parts.length-1; i++) {
obj = obj[parts[i]]
}
obj[parts[parts.length-1]] = val;
}
setVal(bar, foo, 'Hello World');
Also to get the value:
functiongetVal(obj, accessors) {
var parts = accessors.split('.');
for(var i = 0; i < parts.length; i++) {
obj = obj[parts[i]]
}
return obj;
}
var val = getVal(bar, foo);
Post a Comment for "How To Convert A String Containing Dots To A Property Accessor In Javascript?"