Javascript 将html输入数组转换为JS对象

Javascript 将html输入数组转换为JS对象,javascript,html,Javascript,Html,我在将HTML输入数组转换为Javascript对象时遇到问题 我有以下表格: <form> <input name="element[el11][el21]" value="a"> <input name="element[el11][el22]" value="b"> <input name="element[el12][el21]" value="c"> <input name="element[el12

我在将HTML输入数组转换为Javascript对象时遇到问题

我有以下表格:

<form>
    <input name="element[el11][el21]" value="a">
    <input name="element[el11][el22]" value="b">
    <input name="element[el12][el21]" value="c">
    <input name="element[el12][el22]" value="d">
</form>
有什么方法可以简单地做到这一点吗?

您可以使用两次该方法来获得结果

var-res=
//获取表单中的所有iput元素并转换为数组
//为了便于迭代,请对旧浏览器使用[].slice.call()
from(document.querySelectorAll('forminput'))
//在元素上迭代,可以对定义的对象使用forEach
.减少(功能(obj、ele){
//缓存输入值和名称
var val=元素值,
name=ele.name;
//获取方括号内的内容并拆分
name.slice(name.indexOf('['))+1,name.lastIndexOf(']'))
.split('][')
//迭代拆分的数组以生成嵌套属性
.减少(功能(o、k、i、arr){
//检查当前值是否为最后一个元素,然后将输入值作为属性值
if(arr.length-1==i)
返回o[k]=val;
//否则,如果未定义,则创建嵌套对象并返回嵌套对象
返回o[k]=o[k]|{};
//将初始值设置为对象
},obj)
//返回对象引用
返回obj;
//将初始值设置为空对象
}, {});
console.log(res);

您可以在元素上循环,并根据
[…]中的值创建对象。

var inputs=document.querySelectorAll('input[name^=“element”]”);
var输出={};
//要匹配“[…]的正则表达式`
常量正则表达式=/(?!^\[)\w+(?=\]\$)/g
//循环输入
对于(变量i=0;i

您可能可以使用正则表达式获取元素名称,然后按字典顺序对其排序。以下是我尝试的正则表达式:
name=“.*?\[(.*)\]\[(.*)\]\[(.*)\]”
 {
        el11: 
        {
            el21: a
            el22: b
        },
        el22:
        {
            el21: c
            el22: d
        }
 }