如何解析输入[]值并将其放入Javascript数组

如何解析输入[]值并将其放入Javascript数组,javascript,Javascript,假设我有这个: <form id='foo'> <input name='bar[name]' /> <input name='bar[age]' /> </form> 另外,我不想为此使用任何框架。这将为您提供以下元素: var result = {}; var elements = document.forms.foo.getElementsByTagName("input"); for(var i = 0; i <

假设我有这个:

<form id='foo'>
 <input name='bar[name]' />
 <input name='bar[age]' />
</form>

另外,我不想为此使用任何框架。

这将为您提供以下元素:

 var result = {};
    var elements = document.forms.foo.getElementsByTagName("input");
    for(var i = 0; i < elements.length; i++)
    {
       /* do whatever you need to do with each input */
    }
var result={};
var elements=document.forms.foo.getElementsByTagName(“输入”);
对于(var i=0;i
您可以将元素映射到这样的对象

function putIntoAssociativeArray() {

    var 
        form = document.getElementById("foo"),
        inputs = form.getElementsByTagName("input"),
        input,
        result = {};

    for (var idx = 0; idx < inputs.length; ++idx) {
        input = inputs[idx];
        if (input.type == "text") {
            result[input.name] = input.value;
        }
    }

    return result;
}
函数putinotassociateArray(){
变量
form=document.getElementById(“foo”),
输入=form.getElementsByTagName(“输入”),
输入,
结果={};
对于(变量idx=0;idx
var inputs=document.getElementsByTagName('input');
变量字段\名称、值、匹配项、结果={};
对于(变量i=0;i
var form=document.getElementById('foo');
var inputs=form.getElementsByTagName(“输入”);
var regex=/(.+?)\[(.+?)\]/;
var result={};
对于(变量i=0;i
我需要自己做这件事,找到这个问题后,我不喜欢任何答案:我不喜欢正则表达式,其他的都是有限的

您可以通过多种方式获取
数据
变量。在实现此功能时,我将使用jQuery的
serializeArray
方法

函数解析输入(数据){
var ret={};
重新循环:
for(数据中的var输入){
var val=数据[输入];
var parts=input.split('[');
var last=ret;
用于(var i部分){
var部分=部分[i];
if(part.substr(-1)==']'){
part=part.substr(0,part.length-1);
}
如果(i==parts.length-1){
最后[部分]=val;
继续循环;
}如果(!last.hasOwnProperty(部分)){
最后[部分]={};
}
最后=最后[部分];
}
}
返回ret;
}
风险值数据={
“名称”:“123”,
“项目[安装][项目id\u 4]:“4”,
“项目[安装][项目编号5]:“16”,
“项目[选项][接管]:“是”
};
var out=解析输入(数据);
console.log('\n***关键时刻:\n');
控制台。注销;

我认为“纯JavaScript”的意思是“不使用其他人编写的JavaScript,比如jQuery或YUI团队”?(与“无Flash”或“无DOM”相反)从技术上讲,jQuery是“纯JavaScript”。你想了解如何读取,还是想更高效地完成任务?是不是
querySelectorAll
也很纯?
querySelectorAll
和DOM一样不纯净,它是浏览器向JS公开的API,不是JS本身的一部分。是的……但我们将如何获得name属性的值。即,在您使用的for循环
elments[i]中的bar[name],bar[age]@DimitrisPapageorgiou。name
它不会形成嵌套的json。它只会有一层深度。在嵌套表单结构的情况下,它将不起作用
function putIntoAssociativeArray() {

    var 
        form = document.getElementById("foo"),
        inputs = form.getElementsByTagName("input"),
        input,
        result = {};

    for (var idx = 0; idx < inputs.length; ++idx) {
        input = inputs[idx];
        if (input.type == "text") {
            result[input.name] = input.value;
        }
    }

    return result;
}
var inputs = document.getElementsByTagName('input');
var field_name, value, matches, result = {};
for (var i = 0; i < inputs.length; i++) {
   field_name = inputs[i].name;
   value = inputs[i].value;

   matches = field_name.match(/(.*?)\[(.*)\]/);

   if (!results[matches[0]]) {
       results[matches[0]] = {};
   }
   results[matches[0]][matches[1]] = value;
}
var form = document.getElementById( 'foo' );
var inputs = form.getElementsByTagName( "input" );
var regex = /(.+?)\[(.+?)\]/;
var result = {};
for( var i = 0; i < inputs.length; ++i ) {
    var res = regex.exec( inputs[i].name );
    if( res !== null ) {
        if( typeof result[ res[1] ] == 'undefined' ) result[ res[1] ] = {};
        result[ res[1] ][ res[2] ] = inputs[i].value;
    }
}