我有一个由多个已命名且具有相应搜索条件的过滤器组成的 URL,我无法更改这些 URL 的构造方式。
我知道如何在我只是尝试获取一个参数的值的情况下获取查询字符串参数,但我似乎无法弄清楚如何将它们适本地关联在一起。例如,这是网址:
/AllItems.aspx?FilterName=FilterA&FilterMultiValue=*FilterASearchValue*&FilterName=FilterB&FilterMultiValue=*FilterBSearchValue*"
我想从此网址获取值,以便可以将过滤器 A 与 FilterA 搜索值关联,并将过滤器 B 与 FilterB 搜索值关联
最佳答案
你可以使用reduce来做到这一点:
var u='/AllItems.aspx?FilterName=FilterA&FilterMultiValue=*FilterASearchValue*&FilterName=FilterB&FilterMultiValue=*FilterBSearchValue*'
u.split(/[?&]/).reduce(function(a,b,c){
var p=b.split("="), k=p[0], v=decodeURIComponent(p[1]);
if(!p[1])return a;
a[k]=a[k]||[];
a[k].push(v);
return a;
}, {})
它返回参数数组而不是字符串,允许同名参数重复:
{
"FilterName": [
"FilterA",
"FilterB"
],
"FilterMultiValue": [
"*FilterASearchValue*",
"*FilterBSearchValue*"
]
}
关于javascript - 使用Jquery或JS获取多个同名参数时的URL查询字符串参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22942257/