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",...