给定form
元素new FormData(form)
返回一个迭代器。
// [["key1", "val1"],["key2", "val2"]]
console.log([new FormData(form)...])
我现在想将其转换为表格的对象:
{ "key1": "val1", "key2": "val2" }
使用ES6 / 7功能(由babel支持)。
任何想法是否可以通过功能方法进行?
答案 0 :(得分:6)
您可以.reduce
使用传播...
运算符
[...new FormData(document.querySelector('form'))].reduce((o, [k, v]) => {
o[k] = v;
return o;
}, {}); // Object {"key1": "val1", "key2": "val2"}
答案 1 :(得分:1)
您可以使用for..of
循环
var formData = new FormData();
formData.append("a", 123);
formData.append("b", 456);
var obj = {};
for(let prop of formData) {obj[prop[0]] = prop[1]};
console.log(obj)

或者,使用rest element
,FormData()
返回Iterator
,Array.prototype.forEach()
。
var formData = new FormData();
formData.append("a", 123)
formData.append("b", 456)
var res = (d, it = [...d], r = {}, t =!(it.forEach(([k, v]) => {r[k] = v}))) => r;
console.log(res(formData))

答案 2 :(得分:0)
您可以简单地定义一个对象并循环遍历迭代器以从中获取值并将其分配给您创建的对象。
var fd = new FormData(someForm);
po = {};
for (var key of fd){
po[key] = fd[key];
}
答案 3 :(得分:0)
使用函数式
function getFormObj(form) {
return [...new FormData(form)].reduce((prev, [key,val]) => {
return Object.assign(prev, {[key] : val}) ;
}, {}) ;
}