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));