JSFiddle - React, Tailwind, and code Playground
by Jussia
JavaScript
var data = {
'LOC.C517.E3225': ["Место хранения1", "Место хранения2", "Место хранения3"],
'LOC.C517.E3224': ["9999999999999", "9999999999998", "9999999999997"]
}
var obj = {
TOD: {
E4055: "6"
},
LOC: {
E3227: 6,
}
}
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;
};
/**
* Длинна всех массивов должна быть одинакова!
* @param obj
* @param data
*/
function repeatAndPopulateObjects(obj, data) {
var res = [],
keys = Object.keys(data);
for (var i = 0; i < data[keys[0]].length; i++) {
var item = JSON.parse(JSON.stringify(obj));//Object.assign({}, obj);
for (var path in data) {
var val = data[path][i];
item = setObjectProperty(item, path, val);
}
res.push(item)
}
return res;
}
console.log(repeatAndPopulateObjects(obj, data))