JSFiddle - React, Tailwind, and code Playground

JavaScript

/* lodash implementation of 'get', 'set', and 'unset' without dot or bracket notation
  * - supports getting and setting 'prop1.2' array element but not with brackets: 'prop1.[2]'
  */
isObjectKey = (obj, key) => {
  return Object.getPrototypeOf(obj) === Object.prototype && /string|number/.test(typeof key);
}

isArrayNumber = (obj, key) => {
  const isKey = /string|number/.test(typeof key), path = isKey ? String(key).split('.') : [], prop = isKey && path.length > 1 ? path.shift() : '';
  return Object.getPrototypeOf(obj) === Array.prototype && isKey && !isNaN(prop);
}

isValid = (obj, key) => {
  const isObj = isObjectKey(obj, key), isArr = isArrayNumber(obj, key);
  return isObj || isArr;
}

define = (obj, key, value) => {
  Object.defineProperty(obj, String(key), { value, writable: true, configurable: true, enumerable: true	 });
}

get = (obj, key, value) => {
  if (!isValid(obj, key)) {
    return undefined;
  }
  let path = String(key).split('.'), prop = path.shift(), result = new Map(Object.entries(obj)).get(prop);
  return path.length && typeof result !== 'undefined' ? get(result, path.join('.'), value) : result || value;
}

set = (obj, key, value) => {
  if (!isValid(obj, key)) {
    return undefined;
  }
  let path = key.split('.'), prop = path.shift();
  if (!(prop in obj)) {
    define(obj, prop, {});
  }
  const result = get(obj, prop);
  return path.length && isValid(result, path.join('.')) ? set(result, path.join('.'), value) : define(obj, prop, value);
}

unset = (obj, key) => {
  if (!isValid(obj, key)) {
    return undefined;
  }
  let path = key.split('.'), prop = path.shift();
  if (!(prop in obj)) {
    return undefined;
  }
  if (path.length) {
    let result = get(obj, prop);
    result = unset(result, path.join('.'));
    set(obj, prop, result);
    return obj;
  } else {
    const { [prop]: remove, ...rest } = obj;
    return rest;
  }
}

let obj = {};
set(obj, 'prop1.prop2', 'value1');
console.log(Object.entries(obj));
console.log(get(obj,...