JSFiddle - React, Tailwind, and code Playground

by Dmitry Kostenko

JavaScript

/*
	H/W
	1.)
	function getIn( obj, path ){}
	Работать должна так:
	var obj = {
			deepObj: {
					deeperObj: {
							key: 5
					}
			}
	}
	getIn( obj, [ "deepObj", "deeperObj", "key" ]) должно вернуть 5
	getIn( obj, [ "deepObj", "deeperObj" ]) должно вернуть { key: 5 }
	getIn( obj, [ "deepObj", "smth", "key" ]) должно вернуть undefined

	Тоесть ф-ция "погружается" в глубокий объект
	
	2.) function setIn( obj, path, value ){}
	Не читает, а записывает value по указанному пути внутрь объекта obj.
	При необходимости создает пустые объекты внутри obj, если на пути таковых нет.
*/

function getIn( obj, path ) {
	for ( var i = 0; i < path.length; i++){
  	if(obj[path[i]] === undefined) return;
    obj = obj[path[i]];
	}
  return obj
}

var obj = {
  deepObj: {
    deeperObj: {
      key: 5
    }
  }
}
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 ){
	for ( var i = 0; i < path.length-1; i++){
    obj = obj[path[i]];
	}
  //console.log(path[path.length-1])
  obj[path[path.length-1]] = value;
  return obj
}

//setIn( obj, [ "deepObj", "deeperObj", "key" ], 78)
//console.log(obj)