JSFiddle - React, Tailwind, and code Playground
by samizdam
HTML
<textarea name="query">some_key=some_value&another_multi_var[]=A&another_multi_var[]=B</textarea>
<br/>
<input type="button" name="submit" value="parse"/>
<div id="result">
</div>
JavaScript
'use strict';
var Query = function(query_string){
// input:
var sourceQueryString = query_string || '';
// public property
this.params = {};
function parseFromString(){
}
this.serializeToString(){
}
}
var QueryParser = function(query){
var ARG_SEPARATOR = '&';
var VAL_SEPARATOR = '=';
var ARRAY_PATTERN = /\[(.*)\]$/;
this.pushParam = function(key, value){
var params = {};
// check if param is array (key[]=)
var multi_key_index = key.match(ARRAY_PATTERN);
if(multi_key_index.length > 0){
var array_key = multi_key_index[0];
if(this.params[array_key]){
}else{
}
}else{
;
}
this.params[key] = param;
}
// hash for count numeric index
var arrayParamsCounter = {};
var pairs = query.split(ARG_SEPARATOR);
for(var i = 0; i < pairs.length; i++){
// pair key => value
var chanks = pairs[i].split(VAL_SEPARATOR);
this.pushParam(chanks[0], chanks[1]);
}
this.parse = function(){
}
}
$('[name="submit"]').on('click', function(){
var query = $('[name="query"]').val();
var parser = new QueryParser(query);
var params = parser.parse(query);
console.log(params);
});