如何将数组参数化为单个逗号分隔值?

时间:2013-12-04 20:27:59

标签: javascript jquery

如何对数组进行参数化,使其成为以逗号分隔的单个名称值对。使用jQuery $ .param为每个数组值创建一个参数,而不是只为一个。显然,没有选择或设置来改变这一点。我正在寻找的不仅仅是使用Array.join,因为我需要深度序列化和url编码。是否有jQuery.param选项或实用程序库?

使用jQuery的param方法:

$.param({ a: [2, 3, 4] }); // "a[]=2&a[]=3&a[]=4"

我需要:

var p = {a: [2, 3, 4]};
param(p) //"a=2,3,4"

2 个答案:

答案 0 :(得分:2)

最简单的,假设对象的每个属性的值是一个数组:

function param(obj) {
    var output = [];
    for (var prop in obj) {
        if (obj.hasOwnProperty(prop)) {
            output.push(prop + '=' + obj[prop].join(','));
        }
    }
    return output.join('&');
}

var p = {
    a: [2, 3, 4],
    b: ['something','else']
};
console.log(param(p)); //a=2,3,4&b=something,else

JS Fiddle demo

答案 1 :(得分:0)

我认为你将不得不创建这个函数定制。幸运的是,如果您的数据结构非常简单,那就不难了:

var p = {a: [2, 3, 4]};
var encoded = '';

for (var prop in p) { 
  if (p.hasOwnProperty(prop)){
    encoded += prop + '=' + p[prop].join();
  }
}
相关问题