Skip to content Skip to sidebar Skip to footer

Get Url Parameter Value When Parameter Is Defined Multiple Times

I have the following URL: products?feature_filters[]=&feature_filters[]=on&feature_filters[]=on From this I need to get an array, something like this: var feature_filters

Solution 1:

You can extend the in your linked answer, to loop through the parameters in the same way, but instead of just returning the first match, build up an object where each property is the name of the querystring entry and contains an array of its value, basically a dictionary of arrays.

Then for a specific key, you can loop through it's array and find which indices are set:

// 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);

Working Fiddle


Post a Comment for "Get Url Parameter Value When Parameter Is Defined Multiple Times"