我有以下网址:
products?feature_filters[]=&feature_filters[]=on&feature_filters[]=on
从这里我需要得到一个数组,如下:
var feature_filters = [1, 2]
注意:正如MightyPork指出的那样,这将是从零开始的......所以我需要拒绝0,并保持1和2。
我已成功使用此example获取一次定义的URL参数。但是我无法解析由我的应用程序创建的这组参数。
答案 0 :(得分:0)
你可以扩展你的链接答案,以相同的方式循环参数,但不是只返回第一个匹配,而是建立一个对象,其中每个属性是查询字符串条目的名称,并包含一个数组它的值,基本上是一个数组字典。
然后,对于特定的键,您可以遍历它的数组并找到设置的索引:
// groups all parameters together into a dictionary-type object
function getUrlParameterGroups()
{
var sPageURL = window.location.search.substring(1);
var paramGroups = {};
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++)
{
var paramParts = sURLVariables[i].split('=');
var sParameterName = paramParts[0];
// first time we've seen it - add a blank array
if(!paramGroups.hasOwnProperty(sParameterName))
{
paramGroups[sParameterName] = [];
}
// ad to the array
if(paramParts.length > 1)
{
paramGroups[sParameterName].push(paramParts[1]);
}
else
{
// handle not having an equals (eg y in x=1&y&z=2)
paramGroups[sParameterName].push('');
}
}
return paramGroups;
}
// gets which indices of the specified parameter have a value set
function getSetUrlParameters(sParameterName)
{
var arr = getUrlParameterGroups()[sParameterName];
return arr.reduce(function(previousValue, currentValue, index) {
if(currentValue != '') { // or if(currentValue == 'on')
previousValue.push(index);
}
return previousValue;
}, []);
}
var result = getSetUrlParameters('feature_filters[]');
console.log(result);