JSFiddle - React, Tailwind, and code Playground

by minagabriel

JavaScript

function p(p) { console.log(p); }

var testQueries = 
[
    "https://www.google.com/search?sugexp=chrome,mod=1&sourceid=chrome&ie=UTF-8&q=how+to+get+url+params",
    "ALM_frmTopAlarmHistoryReport.aspx?strAlarmConnection=Blend2Alarms&strType=1&intCategory=0&msec=34&tabtitle=Top+Blend+2+Alarms&tabapp=Alarms "
];

function split(query) {
    var queryString = {};
    
    var parts = extractQueryString(query, extractQueryStringRegular);
    
    if (!parts) {
        parts = extractQueryString(query, extractQueryStringHashed);
    }

    if (!parts) return null;
    
    var queryStringPairs = parts[1].split("&");

    if (queryStringPairs.length == 1 && queryStringPairs[0] === "") {
        return null;
    }

    for (var i = 0, len = queryStringPairs.length; i < len; i++) {
        var queryItem = queryStringPairs[i].split("=");
        var queryName = decodeURIComponent(queryItem[0]);
        var queryValue = decodeURIComponent(queryItem[1]);
        if (queryName.length) {
                    queryString[queryName] = queryValue;    
        }
    }

    return queryString;
}

function extractQueryString(query, splitterFn) {
    if (null == query || undefined == query)
        return null;
    
    var result = splitterFn(query);

    if (result.length != 2) {
        return null;
    }

    return result;
}

function extractQueryStringHashed(query) {
    return query.split("#");
}

function extractQueryStringRegular(query) {
    return query.split("?");
}

for (var i = 0, len = testQueries.length; i < len; i++) {
    var result = split(testQueries[i]);
    p(result);  
}