Javascript 带嵌套数组的FormData到JS对象
我看过很多关于如何做相反的事情的帖子,嵌套的对象到FormData,以及基本的FormData到对象,但是我正在尝试将带有嵌套数组的FormData转换为对象 FormData包含嵌套/多维数组数据,因此在FormData.entires()中运行不会产生以下结果:Javascript 带嵌套数组的FormData到JS对象,javascript,json,object,multidimensional-array,form-data,Javascript,Json,Object,Multidimensional Array,Form Data,我看过很多关于如何做相反的事情的帖子,嵌套的对象到FormData,以及基本的FormData到对象,但是我正在尝试将带有嵌套数组的FormData转换为对象 FormData包含嵌套/多维数组数据,因此在FormData.entires()中运行不会产生以下结果: { "key": value, "items[0][key1]": value, "items[0][key2]": value, &quo
{
"key": value,
"items[0][key1]": value,
"items[0][key2]": value,
"items[1][key1]": value,
"items[1][key2]": value
}
而我需要的是:
{
"key": value,
"items": [
{
"key1": value,
"key2": value
},
{
"key1": value,
"key2": value
}
]
}
如果不使用乱七八糟的正则表达式,这是可能的吗?我最终转而在我的名字中使用点符号(key1.0.keyA),并使用点对象包,如下所示:
export const formDataToObject = (formData) => {
const object = {};
formData.forEach(function(value, key) {
DotObject.set(key, value, object);
});
// Filter out unset/undefined items
Object.keys(object).forEach(key => {
if (Array.isArray(object[key])) {
object[key] = [...object[key]].filter(Boolean);
}
});
return object;
};
你想做什么?我想从语义上构造一个表单,然后提取数据,因为它需要作为JSON发送到服务器。但是,我怎么知道,
items[0]
是一个数组?它可以是一个对象{0:value}
所以items[0][key1]:value
可以是{items:{0:{key1:value}}}}
你完全正确,一般来说可能是,但我特别将它作为一个数组来对待。它还有一个名为try It out的函数。。。也检查我的答案