序列化对象数组

Serialize an array of objects

本文关键字:数组 对象 序列化      更新时间:2023-09-26

我有一个查询Rest API的函数。函数调用看起来像:

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中,关于过滤器阵列,最好/最快的方法是什么?

Array.prototype.map是您的朋友:

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