jQuery - 创建包含键 - 值对的对象数组

时间:2016-03-20 04:51:30

标签: jquery

我有以下HTML代码:

<div class="input_data">
    <input type="text" name = 'firstname' class="fname">
    <input type="text" name = 'lastname' class="lname">
</div>
<br>
<br>
<div class="input_data">
    <input type="text" name = 'firstname'class="fname">
    <input type="text" name = 'lastname' class="lname">
</div>
<button id="sbmt">Submit</button>

我试图通过以下代码将输入中的字符串对分配为jQuery数组中的对象:

$('#sbmt').on('click', function() {

    var this_row = {};
    //var all_rows = [];

    $('.input_data').each(function(){

        $('> input', this).each(function(){

            //this_row[$(this).attr('name')] = $(this).val();
            //this_row.push($(this).attr('name')) = $(this).val();
            keyvalue = $(this).attr('name');
            namevalue = $(this).val();
            alert(keyvalue + " is : " + namevalue);
            this_row[keyvalue] = namevalue;
            //all_rows.push({$(this).attr('name'):$(this).val()});
        });

    });

正如你所看到的那样,我已经用all_rows注释了这些语句 - 实际上它是错误地使用&#34;这个&#34;这里不合法。

完成后,当前形式的代码仅存储来自第二组输入的值。

我实际上需要生成像

这样的对象数组
[{firstname:firstname-1, lastname:lastname-1}, {firstname:firstname-2, lastname:lastname:2}]

我怎样才能做到这一点?另外,我想知道如何使声明all_rows.push({$(this).attr('name'):$(this).val()});起作用。

1 个答案:

答案 0 :(得分:2)

你需要这样的东西:

$('#sbmt').on('click', function() {

    var all_rows = [];

    $('.input_data').each(function() {
            var this_row={};
            $(this).find("input").each(function(){

            keyvalue = $(this).attr('name');
            namevalue = $(this).val();
            this_row[keyvalue] = namevalue;
        });
        all_rows.push(this_row);

    });
    console.log(all_rows);
   });

https://jsfiddle.net/9kxxwz0n/