JSFiddle - React, Tailwind, and code Playground
by dru_zod
JavaScript
// queryStringBuilder
var write = function (text) {
document.getElementsByTagName('body')[0].innerHTML += '<pre>' + JSON.stringify(text) + '</pre>';
},
o = {
q: [
{
mt: [1,2],
a: ['E09000010','E09000022'],
p: 'latest',
v: [
{ vt: 'raw' },
{ vt: 'band', n: 4 }
]
},
{
mt: [3],
v: [
{ vt: 'raw' }
]
}
],
s: [
{ st: 'sum', sf: 'area' },
{ st: 'band', n: 4, t: 1, sf: 'area' }
]
},
expectedResult = 'mt=1%2C2&a=E09000010%2CE09000022&p=latest&v.vt=raw&v2.vt=band&v2.n=4'
+ '&q2.mt=3&q2.v.vt=raw&s.st=sum&s.sf=area&s2.st=band&s2.n=4&s2.t=1&s2.sf=area',
actualResult,
queryStringBuilder = (function(defaultName, toCollapse) {
var newNamespace = function(ns, name) {
var newNs = ns.slice(0);
newNs.push(name);
return newNs;
},
joinName = function(fullName) {
if (fullName.length && fullName[0] === defaultName) {
fullName = fullName.slice(1); // do not include the default start
}
return fullName.join('.');
},
flattenObject = function(result, obj, ns) {
var name, value, i = 0, fullName;
if (!ns) {
ns = [];
}
for (name in obj) {
if (this.hasOwnProperty(name))
continue;
value = obj[name];
if (typeof value === 'function')
continue;
if (Array.isArray(value)) {
...