JSFiddle - React, Tailwind, and code Playground
by Jussia
JavaScript
function FormParamsObject(objectParams) {
this.objectParams = objectParams
this.getFullObject = function () {
return this.objectParams
}
this.getObjectProperty = function (propPath) {
return propPath.split('.').reduce(function (object, property) {
return object !== undefined ? object[property] : null
}, this.objectParams);
}
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('getFullObject: ', params.getFullObject())
// console.log('getObjectProperty: ', params.getObjectProperty('param2.param21'))
// console.log('convertObjectToArray: ', params.convertObjectToArray('param2.param22'))
console.log('setObjectProperty', params.setObjectProperty('param1', 'new value'))
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())