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)