JSFiddle - React, Tailwind, and code Playground
by ramnathv
JavaScript
function setDeepProperty(obj, path, value)
{
var curr = obj;
for (var depth = 0; depth < path.length - 1; depth++)
{
curr = curr[path[depth]];
}
console.log(curr)
curr[path[path.length - 1]] = value;
}
arr = {a1: {a2: { a3: false }}};
setDeepProperty(arr, ["a1", "a2", "a3"], true);
//console.log(arr)
function setDeepProperty2(obj, path, value){
var path2 = path.slice(0, path.length - 1)
var x = path2.reduce(function(prev, cur){
return prev[cur]
}, obj)
console.log(x)
x[path[path.length - 1]] = value
}
setDeepProperty2(arr, ["a1", "a2", "a3"], 10)
console.log(arr)
function setDeepProperty3(obj, pstr, value){
var path = pstr.split(".")
var path2 = path.split(".")
.slice(0, path.length - 1)
var x = path2.reduce(function(prev, cur){
return prev[cur]
}, obj)
x[path[path.length - 1]] = value
}
arr = {a1: {a2: { a3: false }}}
setDeepProperty2(arr, "a1.a2.a3", true)
arr2 = {x: {y: 1}}
setDeepProperty3(arr2, "x.y", 2)
console.log(arr2)