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)) {
                      ...