JSFiddle - React, Tailwind, and code Playground

by kontrach

JavaScript

/*
function queryStringToObject(queryString) {
	var tempString = queryString;
	var obj = {};
	var subString, signAnd, signEqual, keyOfObj;

	var defineTypeOf = function(keyOfObj) {
		//debugger;
		if (keyOfObj == 'false') {
			return keyOfObj = Boolean(false);
		} else if (keyOfObj == 'true') {
			return keyOfObj = Boolean(true);
		} else if (isNaN(+keyOfObj)) {
			return keyOfObj = keyOfObj;
		} else {
			return keyOfObj = +keyOfObj;
		}
	}

	for (var i = 0; i < tempString.length; i++) {
		//debugger;

		signAnd = tempString.indexOf("&");
		if (signAnd === -1) {
			subString = tempString;
			tempString = "";
		} else {
			subString = tempString.substring(0, signAnd)
		};
		signEqual = subString.indexOf("=");
		obj[decodeURIComponent(subString.substring(0, signEqual))] = defineTypeOf(decodeURIComponent(subString.substr(signEqual + 1, subString.length)));
		tempString = tempString.substr(signAnd + 1, tempString.length);

	}
	return obj; 
}
*/

function queryStringToObject(str){
    var o = {},
        params = str.split('='),
        tempF;// = new Function('return ' + params[1]);

    try{
        tempF = new Function('return ' + params[1]);
        o[params[0]] = tempF(); //  eval(params[1]);
    } catch(e) {
        o[params[0]] = unescape(params[1]);
    }
    return o;
}

console.log( queryStringToObject('phrase=mama%20mila%20ramu') );
console.log( queryStringToObject("user=false") );
console.log( queryStringToObject("user=[1,3,44,4,4,4,4]") );
console.log( queryStringToObject("user=123") );
console.log( queryStringToObject("user=12+3") );