Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带嵌套数组的FormData到JS对象_Javascript_Json_Object_Multidimensional Array_Form Data - Fatal编程技术网

Javascript 带嵌套数组的FormData到JS对象

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

我看过很多关于如何做相反的事情的帖子,嵌套的对象到FormData,以及基本的FormData到对象,但是我正在尝试将带有嵌套数组的FormData转换为对象

FormData包含嵌套/多维数组数据,因此在FormData.entires()中运行不会产生以下结果:

{
    "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的函数。。。也检查我的答案