JSFiddle - React, Tailwind, and code Playground

HTML

<form id="form" method="post" action="/url" >

Group 1
<input type="checkbox" name="filter_a[]" value="1">
<input type="checkbox" name="filter_a[]" value="2">
<input type="checkbox" name="filter_a[]" value="3">

Group 2
<input type="checkbox" name="filter_b[]" value="1">
<input type="checkbox" name="filter_b[]" value="2">
<input type="checkbox" name="filter_b[]" value="3">

Group 3
<input type="checkbox" name="filter_c[]" value="1">
<input type="checkbox" name="filter_c[]" value="2">
<input type="checkbox" name="filter_c[]" value="3">

<input type="submit" id="filterapply" value="Filter Apply" />

</form>

JavaScript

var hasClass = function(element, className) {
        return (new RegExp("( |^)" + className + "( |$)", "g")).test(element.className);
    };

var form = document.getElementById('form');

var fieldValue = {
    allReg : /\[([a-zA-Z0-9-]*)\]/g,
    isObjReg : /\[(.*)\]/g,
    serialize: function (a, b) {
        var c = [];
        for (var d in a) {
            var e = b ? b + "[" + d + "]" : d, f = a[d];
            c.push("object" == typeof f ? fieldValue.serialize(f, e) : encodeURIComponent(e) + "=" + encodeURIComponent(f))
        }
        return c.join("&")
    },
    get : function(fieldName, reference) {
        var arr = [fieldName.replace(fieldValue.isObjReg, '')];
        var match;
        while (match = fieldValue.allReg.exec(fieldName)) {
            arr.push(match[1]);
        }

        if (reference === undefined) return undefined;
        if (reference[arr[0]] === undefined) return undefined;

        var tmpObj = reference;

        for (var i = 0; i < arr.length; i++) {
            if (tmpObj[arr[i]] !== undefined) {
                if (tmpObj[arr[i]] == '') return tmpObj[arr[i]];
                tmpObj = tmpObj[arr[i]]
            }
        }

        return tmpObj;
    },
    set : function(fieldName, value, reference, hard) {
        hard = hard || !1;

        var arr = [fieldName.replace(fieldValue.isObjReg, '')];
        var match;
        while (match = fieldValue.allReg.exec(fieldName)) {
            arr.push(match[1]);
        }

        if (reference === undefined) return undefined;

        var tmpObj = reference;

        for (var i = 0; i < arr.length; i++) {
            if (arr[i+1] != undefined) {
                if (arr[i+1] == '') {
                    tmpObj[arr[i]] = tmpObj[arr[i]] || [];
                    if (hard) {
                        tmpObj[arr[i]] = value;
                    } else {
                        tmpObj[arr[i]].push(value);
                    }
                } else {
                   ...