Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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对象属性?_Javascript_Jquery_Properties - Fatal编程技术网

如何创建动态命名的JavaScript对象属性?

如何创建动态命名的JavaScript对象属性?,javascript,jquery,properties,Javascript,Jquery,Properties,这是我的 <form> <input type="text" name="item1" class="grab" value="userInput" /> <input type="text" name="somethingelse1" class="grab" value="differentUserInput" /> ... (any number of inputs) </form> 我尝试过,但没有成功: var output

这是我的

<form>
  <input type="text" name="item1" class="grab" value="userInput" />
  <input type="text" name="somethingelse1" class="grab" value="differentUserInput" />
  ... (any number of inputs)
</form>
我尝试过,但没有成功:

var output = new Array();
$('.grab').each( function(index) { 
    output.push({$(this).attr('name'): $(this).val()} );
});

我尝试了几种变体,包括试用eval(),但都没有效果。如果我删除$(this.attr('name'),并给它一个静态名称,它就会工作。。。那么如何创建动态命名的对象呢?

文本对象语法不能用于非文本键。 要对对象使用非文字键,需要使用
object[keyExpression]
符号,如下所示。(这相当于
keyExpression=“key”
时的
object.key
,但请注意,前一种情况将表达式作为键,后一种情况将表达式作为标识符。)

快乐编码


也可考虑使用:


我仅将窗体的id作为此函数的参数:

function form2JSON(form){
    var info_ser = $('#'+form).serialize();
    var data = info_ser.split('&');
    var output = {};
    $.each( data, function( i, l ){
        var data_input = l.split('=');
        output[data_input[0]] = data_input[1];
    });
   return output;
}

结果对象类似于这样的
对象{fieldname=“value”,fieldname1=“value1”,fieldname2=“value3”,…}

谢谢,这很有效。感谢您的快速回复和良好的信息。
var output = []
$('.grab').each(function(index) { 
    var obj = {}
    obj[$(this).attr('name')] = $(this).val()
    output.push(obj)
})
var output = $('.grab').map(function() { 
    var obj = {}
    obj[$(this).attr('name')] = $(this).val()
    return obj
})
function form2JSON(form){
    var info_ser = $('#'+form).serialize();
    var data = info_ser.split('&');
    var output = {};
    $.each( data, function( i, l ){
        var data_input = l.split('=');
        output[data_input[0]] = data_input[1];
    });
   return output;
}