首先,我们需要了解一下jQuery中的$.param()方法。该方法可以将一个对象序列化成URL参数格式的字符串,例如:
var params = {foo: "bar", baz: [1, 2, 3]};
var str = $.param(params); // "foo=bar&baz%5B%5D=1&baz%5B%5D=2&baz%5B%5D=3"
第二个参数可以指定序列化数组时使用的序列化方式,对应的取值包括 “brackets”(默认值,使用方括号)、“indices”(使用数组下标)以及“repeat”(使用重复参数名)。例如:
var params = {foo: "bar", baz: [1, 2, 3]};
var str1 = $.param(params, true); // "foo=bar&baz[]=1&baz[]=2&baz[]=3"
var str2 = $.param(params, false); // "foo=bar&baz=1&baz=2&baz=3"
那么,我们如何将一个参数列转换为数组呢?可以使用以下方法:
function paramsToArray(params) {
var arr = [];
$.each(params.split('&'), function() {
var param = this.split('=');
var key = decodeURIComponent(param[0]);
var val = decodeURIComponent(param[1]);
if (val.indexOf(',') > -1) {
val = val.split(',');
}
arr.push({ name: key, value: val });
});
return arr;
}
该方法首先将参数列通过“&”符号分隔成多个键值对,再将每个键值对分别通过“=”符号分隔成键名和键值。如果键值中包括逗号,则说明该键对应的值是一个数组,将其通过逗号分隔后再添加至数组中。最终返回一个包含所有键值对的数组。
以下是两个示例:
var params1 = 'foo=bar&baz=1,2,3';
var arr1 = paramsToArray(params1);
console.log(arr1); // [ { name: "foo", value: "bar" }, { name: "baz", value: ["1", "2", "3"] } ]
var params2 = 'foo=bar&baz[]=1&baz[]=2&baz[]=3';
var arr2 = paramsToArray(params2);
console.log(arr2); // [ { name: "foo", value: "bar" }, { name: "baz[]", value: ["1", "2", "3"] } ]
总之,通过以上方法可以方便地将参数列转换为数组,更好地操作和处理URL参数。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jquery如何把参数列严格转换成数组实现思路 - Python技术站