Changer la valeur d'une propriété à l'aide d'une chaîne de caractère "a.b.c"
var obj = {a: {b:{c:1}}};
function setkey(o, str,v) {
var token = str.split('.');
var refo = o;
for(var i = 0; i < token.length; i++) {
var key = token[i];
if (refo !== null && typeof refo === 'object' && key in refo) {
if (i == token.length-1) {
refo[key] = v;
} else {
refo = refo[key];
}
} else {
return null;
}
}
return refo;
}
setkey(obj, "a.b.c", 3);
console.log(obj); // {a: {b:{c:3}}};
Accéder à un objet global à l'aide d'une chaîne de caractères
function get(str, start) {
start=start||this;
return str.split('.').reduce(function(m,a) {return m[a];}, start);
}
// global context:
var a = {b:{}};
var b = get('a.b', window);
b.c = 1;
console.log(a); // {b:{c:1}}