JSFiddle - React, Tailwind, and code Playground
JavaScript
var obj = {
nested: {
nested: {
nonNested: '1'
},
nonNested: '2'
},
nonNested: '3'
};
var obj2 = {
nested: {
nested: {
nonNested: '1'
},
nonNested: '2'
},
nonNested: '3'
};
function modifyObj(obj, field, val) {
var str = 'obj.' + field + '=' + val;
eval(str);
}
modifyObj(obj, 'nested.nonNested', 99);
console.log(obj);
function modifyObj2(obj, field, val) {
//if we are modifying a nested val
if (/\./g.test(field)) {
var arr = field.split('.'),
temp = obj;
//we want temp to be equal to the nested object holding the nested field to be modified and changing this will modify the passed in object
for (var i = 0; i < arr.length - 1; i++) {
temp = temp[arr[i]];
}
temp[arr.length - 1] = val;
}
//if we are modifying a non-nested val
else {
obj[field] = val;
};
}
modifyObj2(obj2, 'nested.nonNested', 99);
console.log(obj2);