JSFiddle - React, Tailwind, and code Playground

by rlemon

HTML

<form id="frm">
    <input name="foo" value="1">
    <input name="foo1" value="1">
    <input name="bar[]" value="2">
    <input name="bar[]" value="2">
    <input name="fooBar[a][]" value="3">
    <input name="foobar[b][]" value="3">
</form>

JavaScript

function serializeForm(frm) {
    var ret = {};
    [].forEach.call(frm.elements, function (element) {
        if (ret.hasOwnProperty(element.name)) {
            if (!Array.isArray(ret[element.name])) {
                ret[element.name] = [ret[element.name]];
            }
            ret[element.name].push(element.value);
        } else {
            ret[element.name] = element.value;
        }
    });
    return ret;
}

console.log(serializeForm(document.forms.frm));