如何解析input []值并将它们放入Javascript数组中

Rya*_*yan 8 javascript

让我说我有这个:

<form id='foo'>
 <input name='bar[name]' />
 <input name='bar[age]' />
</form>
Run Code Online (Sandbox Code Playgroud)

如何在表单中获取数组输入的值foo并将它们放入关联数组/对象中,如下所示:

var result = {bar:{name:'blah',age:21}};
Run Code Online (Sandbox Code Playgroud)

PS我不想为此使用任何框架.

smd*_*lpr 5

我需要自己做这个,在找到这个问题后,我不喜欢任何答案:我不喜欢正则表达式,其他的都是有限的。

您可以通过data多种方式获取变量。serializeArray当我实现这个时,我将使用 jQuery 的方法。

function parseInputs(data) {
    var ret = {};
retloop:
    for (var input in data) {
        var val = data[input];

        var parts = input.split('[');       
        var last = ret;

        for (var i in parts) {
            var part = parts[i];
            if (part.substr(-1) == ']') {
                part = part.substr(0, part.length - 1);
            }

            if (i == parts.length - 1) {
                last[part] = val;
                continue retloop;
            } else if (!last.hasOwnProperty(part)) {
                last[part] = {};
            }
            last = last[part];
        }
    }
    return ret;
}
var data = {
    "nom": "123",
    "items[install][item_id_4]": "4",
    "items[install][item_id_5]": "16",
    "items[options][takeover]": "yes"
};
var out = parseInputs(data);
console.log('\n***Moment of truth:\n');
console.log(out);
Run Code Online (Sandbox Code Playgroud)


scr*_*ola -1

这将为您提供以下元素:

 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 */
    }
Run Code Online (Sandbox Code Playgroud)