Skip to content
Advertisement

Javascript Object to querystring using reduce

I’m having trouble to apply a reduce to an Object to get it in a querystring format.

I want this:

> var obj = {a: 1, b: "213123", c: null, d:false}
> obj2querystring(obj);
a=1&b=213123&c=null&d=false

So far, the close I have got is this:

Object.keys(obj).reduce(function(prev, curr){
    return prev + '&' + curr + '=' + obj[curr];
}, '');

which gives me:

&a=1&b=213123&c=null&d=false

Is there an easier way to achieve this without have to prepend the initialValue and remove the & later?


EDIT: This question is old and today we can just use new URLSearchParams(object).toString(), safely

Advertisement

Answer

Instead of doing a reduce, a cleaner way would be map and join.

Object.keys(obj).map(function(x){
    return x + '=' + obj[x];
}).join('&');
  • map makes and array like this: ["a=1", "b=213123", "c=null", "d=false"]
  • join turns it into a query string: a=1&b=213123&c=null&d=false
User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement