JSFiddle - React, Tailwind, and code Playground

by Jussia

JavaScript

function setObjectProperty(obj, propPath, value) {
		obj = obj && "object" == typeof obj ? obj : {};

		var path = String(propPath).split(".");

		var tmp = obj;

		for (var i = 0; i < path.length; i++) {

			var propName = path[i];
			var val = tmp[propName];
			if (undefined === val || null === val) {
				tmp[propName] = {};
			}
			if (i == path.length - 1) {
				tmp[propName] = value;
			}
			else if (typeof tmp[propName] != "object") {
				tmp[propName] = {};
			}
			tmp = tmp[propName];
		}

		return obj;
	};
  
  function getObjectProperty(obj, propPath, asArray) {
		var res = "";
		obj = obj && "object" == typeof obj ? obj : {};

		var path = String(propPath).split(".");

		var tmp = obj;

		for (var i = 0; i < path.length; i++) {
			var propName = path[i];
			tmp = tmp[propName];
			if (undefined === tmp || null === tmp) {
				if (asArray && !res) {
					res = [];
				}
				break;
			}
			else if (i == path.length - 1) {
				res = tmp;
				if (asArray) {
					if (res) {
						if (undefined === res.length) {
							res = [res];
						}
					}
					else {
						res = [];
					}
				}
			}
		}

		return res;
	};
function repeatAndPopulateObjects(obj, data) {
		var res = [],
			keys = Object.keys(data);
		if (Array.isArray(data[keys[0]])) {
			for (var i = 0; i < data[keys[0]].length; i++) {
				var item = JSON.parse(JSON.stringify(obj));
				for (var path in data) {
					var val = data[path][i];
					item = setObjectProperty(item, path, val);
				}
				res.push(item)
			}
		} else {
    var itemObj = JSON.parse(JSON.stringify(obj));
      for (var j = 0; j < keys.length; j++) {
        itemObj = setObjectProperty(itemObj, keys[j], data[keys[j]]);
      }
       res.push(itemObj);
		}
		return res;
	};

		var sg9defaultValues = {
			tod: {
				e4055: "6"
			},
			loc: {
				e3227: "7"
			}
		};
    var objects = repeatAndPopulateObjects(sg9defaultValues, {'loc.c517.e3224': ["Место хранения1", "Место хранения2"], 'loc.c517.e3225': ["1111111111111",...