JSFiddle - React, Tailwind, and code Playground

by Dmitry Kostenko

JavaScript

var obj = {
  deepObj: {
    deeperObj: {
      key: 5
    }
  }
}

function getIn( obj, path ) {
  for (i=0; i<path.length; i++) {
  	if(path[i] in obj) {
    	obj = obj[path[i]]
    } else {
    	return 6;
    }
  }
  return obj
}
//console.log(getIn( obj, [ "deepObj", "deeperObj", "key" ]))
//console.log(getIn( obj, [ "deepObj", "deeperObj" ]))
//console.log(getIn( obj, [ "deepObj", "smth", "key" ]))

function setIn( obj, path, value ) {
	const len = path.length-1;
  const result = obj;
 
  for (var i=0, el; i<len; i++) {
  	el = path[i]; 

    if(typeof el !== 'object') {
    	console.log('ggg')
      obj[el] = {};
    }
    
    obj = obj[el];
    //console.log(obj)
  }
  obj[path[len]] = value;
  
  return result;
}

console.log((setIn( obj, [ "deepObj10", "deeperObj", "key" ],28)))