0

I have a function that queries a Rest API. The function call looks like:

var filters = [
    {field: "TestField", "params[value]": "VIDEO"},
    {field: "TestField2", "params[value]": "IMAGE"},
];

this.query({limit: 10, text:"Test", filters: filters});

I want to build a query string that looks like:

?limit=10&text="Test"&filters[0].field=TestField&filters[0].params[value]=VIDEO&filters[1].field=TestField2&filters[1].params[value]=IMAGE

What is the best/fastest way to do that in JavaScript regarding the filters array?

mAtZ
  • 89
  • 2
  • 8

1 Answers1

0

Array.prototype.map is your friend:

var filters = [
    {field: "TestField", "params[value]": "VIDEO"},
    {field: "TestField2", "params[value]": "IMAGE"},
];

var qs = filters.map(function(filter,i){
    return "filters[" + i + "].field=" +
            encodeURIComponent(filter.field) +
            "&filters[" + i + "].params[value]=" +
            encodeURIComponent(filter["params[value]"]);
}).join("&");
1983
  • 5,882
  • 2
  • 27
  • 39