JavaScript Add/Update Query String

Function and test suite for adding or updating a query string parameter. https://stackoverflow.com/a/23529943/8385841

by Timar

HTML

<div id='output'></div>

CSS

body {
  font-family: monospace;
  font-size:12px;
  background:black;
  color:white
}

JavaScript

/**
 * JavaScript Query string replacement function and test suite.
 * 
 * The function is designed to add or update a query string parameter in a given
 * URL. If all of the tests pass, the function should be pretty good.
 */
var test_val = 'new',
	test_uris = [
		[ 'http://example.com/', 'http://example.com/?param=' + test_val ],
        [ 'http://example.com/', 'http://example.com/?param=' + test_val ],
        [ 'http://example.com/page', 'http://example.com/page/?param=' + test_val ],
        [ 'http://example.com/login.html?scope=company', 'http://example.com/login.html?scope=company&param=' + test_val ],
		[ 'http://example.com/?', 'http://example.com/?param=' + test_val ],
		[ 'http://example.com/?param', 'http://example.com/?param=' + test_val ],
		[ 'http://example.com/?param=val', 'http://example.com/?param=' + test_val ],
        [ 'http://example.com/?param=val&', 'http://example.com/?param=' + test_val + '&'],
		[ 'http://example.com/?param=val&param2', 'http://example.com/?param=' + test_val + '&param2' ],
		[ 'http://example.com/?param=&param2', 'http://example.com/?param=' + test_val + '&param2' ],
		[ 'http://example.com/?param=&amp;param2', 'http://example.com/?param=' + test_val + '&param2' ],
		[ 'http://example.com/?param=val&param2=val', 'http://example.com/?param=' + test_val + '&param2=val' ],
		[ 'http://example.com/?param2=val&param[]=val', 'http://example.com/?param2=val&param[]=' + test_val ],
		[ 'http://example.com/?param[test]=val&param2=val', 'http://example.com/?param[test]=' + test_val + '&param2=val' ],
		[ 'http://example.com/?param[test]=val&param2[]=val', 'http://example.com/?param[test]=' + test_val + '&param2[]=val' ],
		[ 'http://example.com/?param[]=val&param[]=another&param2=val', 'http://example.com/?param[]=' + test_val + '&param[]=' + test_val + '&param2=val' ],
		[ 'http://example.com/?param=val#', 'http://example.com/?param=' + test_val + '#' ],
		[ 'http://example.com/?param=val&param2=val#param=val',...