1 回答
TA贡献1906条经验 获得超3个赞
没有内置的东西可以做到这一点。数组上的一个简单的 reduce 循环可以将其映射到您想要的格式。
var formData = new FormData(document.querySelector('form'))
var entries = formData.entries();
var data = Object.fromEntries(entries);
var result = Object.entries(data).reduce(function(result, entry) {
const keys = entry[0].match(/([^[]+)\[([^\]]+)/)
result[keys[1]] = result[keys[1]] || {};
result[keys[1]][keys[2]] = entry[1];
return result
}, {});
console.log(result);
<form>
<input name="a[foo]" value="a-foo-1" />
<input name="a[bar]" value="a-bar-1" />
<input name="b[foo]" value="b-foo-1" />
<input name="b[bar]" value="b-bar-1" />
<input name="c[foo]" value="c-foo-1" />
<input name="c[bar]" value="c-bar-1" />
</form>
添加回答
举报