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
 
     
     
    