Javascript 序列化对象数组

Javascript 序列化对象数组,javascript,jquery,angularjs,underscore.js,Javascript,Jquery,Angularjs,Underscore.js,我有一个查询RESTAPI的函数。函数调用如下所示: var filters = [ {field: "TestField", "params[value]": "VIDEO"}, {field: "TestField2", "params[value]": "IMAGE"}, ]; this.query({limit: 10, text:"Test", filters: filters}); ?limit=10&text="Test"&filters[0].

我有一个查询RESTAPI的函数。函数调用如下所示:

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

this.query({limit: 10, text:"Test", filters: filters});
?limit=10&text="Test"&filters[0].field=TestField&filters[0].params[value]=VIDEO&filters[1].field=TestField2&filters[1].params[value]=IMAGE
我想构建一个如下所示的查询字符串:

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

this.query({limit: 10, text:"Test", filters: filters});
?limit=10&text="Test"&filters[0].field=TestField&filters[0].params[value]=VIDEO&filters[1].field=TestField2&filters[1].params[value]=IMAGE
在JavaScript中,关于过滤器阵列,最好/最快的方法是什么?

是您的朋友:

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("&");

我知道您在使用下划线,但您也在使用jQuery吗?好的,那么什么是
params[value]
?这段代码肯定可以运行?我的问题是:构建我在问题中发布的查询字符串的最佳方法是什么。您不能将
params[value]
用作对象文本的键。可以使用字符串
“params[value]”
,也可以使用ECMAScript 6计算属性名
[params[value]]]
。请查看,但请注意。。。不是。您最好将数据序列化为JSON。