I would like to get an object as such:
let params_ = {
filters: {
orderId: null,
status: ['rejected', 'accepted'],
orderStatus: 'A',
a: {
c: 'deepFilter'
}
},
page: {
limit: 15,
offset: 0
}
}
and transform it into:
{
filters[orderId]: null,
filters[status]: ['rejected', 'acepted'],
filters[orderStatus]: 'A',
filters[a.c]: 'deepFilter',
page[limit]: 15,
page[offset]: 0,
}
I was able to go into a two level and getting the result as desired but Im having a problem knowing where I should make the recursive call to be able to call deep nested levels.
So far I have tried the following:
let params_ = {
filters: {
orderId: null,
status: ['rejected', 'accepted'],
orderStatus: 'A',
a: {
c: 'a'
}
},
page: {
limit: 15,
offset: 0
}
}
function paramsSerializer(parameters) {
let finalParameters = {};
for (let key in parameters) {
if (parameters.hasOwnProperty(key)) {
if (typeof parameters[key] === 'object' && parameters[key] !== null) {
finalParameters = {
...finalParameters,
...constructParameterFromObject(parameters[key], key)
}
}
}
}
console.log(finalParameters);
}
function constructParameterFromObject(object, prepend = null) {
let finalParameters = {};
for (let key in object) {
if (object.hasOwnProperty(key)) {
finalParameters = {
...finalParameters,
...{
[`${prepend}[${key}]`]: object[key]
}
}
}
}
return finalParameters;
}
paramsSerializer(params_);
You can have a live example over here: https://codesandbox.io/s/angry-dream-sl0gr Any light would be highly appreciated. Thank you very much for the help in advance