bod*_*ser 1 javascript iterator ecmascript-6
给定一个form元素new FormData(form)返回一个迭代器.
// [["key1", "val1"],["key2", "val2"]]
console.log([new FormData(form)...])
Run Code Online (Sandbox Code Playgroud)
我现在想将其转换为表单的对象:
{ "key1": "val1", "key2": "val2" }
Run Code Online (Sandbox Code Playgroud)
使用ES6/7功能(由babel支持).
如果可以通过功能方法实现这些想法吗?
您可以.reduce在阵列使用扩散方面取得了...运营商
[...new FormData(document.querySelector('form'))].reduce((o, [k, v]) => {
o[k] = v;
return o;
}, {}); // Object {"key1": "val1", "key2": "val2"}
Run Code Online (Sandbox Code Playgroud)
您可以使用Object.fromEntries(iterable);
来自文档:
参数:
iterable- 一个可迭代对象,例如 Array 或 Map 或其他实现可迭代协议的对象。返回值:
一个新对象,其属性由可迭代项给出。
描述:
该
Object.fromEntries()方法采用键值对列表并返回一个新对象,其属性由这些条目给出。iterable 参数应该是一个实现@@iterator方法的对象,该方法返回一个迭代器对象,该对象生成一个双元素数组状对象,其第一个元素是将用作属性键的值,其第二个元素是与该属性键关联的值。
const formData = new FormData();
formData.append("a", 111);
formData.append("b", 222);
formData.append("c", 333);
console.log(Object.fromEntries(formData))Run Code Online (Sandbox Code Playgroud)