JSFiddle - React, Tailwind, and code Playground
by Jussia
JavaScript
function FormParamsObject(objectParams) {
this.objectParams = objectParams
this.getFullObject = function () {
return this.objectParams
}
this.getObjectProperty = function (path, obj) {
return path.split('.').reduce(function(prev, curr) {
return prev ? prev[curr] : null
}, obj || self)
}
this.setObjectProperty = function (propPath, value) {
var keys = propPath.split('.'),
newObjectParams = this.objectParams;
for (var i = 0; i < keys.length; i++) {
if ( (i < keys.length - 1) &&
(this.objectParams[keys[i]] === undefined || this.objectParams[keys[i]][keys[i + 1]] === undefined)) {
newObjectParams[keys[i]] = {}
}
if (i === keys.length - 1) {
newObjectParams[keys[i]] = value
}
newObjectParams = newObjectParams[keys[i]]
}
return value
}
}
var params = new FormParamsObject(
{
param1: 'test1',
param2: {
param21: 'test2',
param22: {
number: ['123', '456'],
text: ['text1', 'text2'],
},
}
}
);
console.log('setObjectProperty', params.setObjectProperty('param2.param21', 'new value'))
console.log('setObjectProperty44444', params.setObjectProperty('param1.param11.param33.param44', 'new value2'))
console.log('getFullObject: ', params.getFullObject())