![](/img/trans.png)
[英]Is it possible to add dynamically named properties to JavaScript object?
[英]How to create dynamically named JavaScript object 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>
使用JQuery / Javascript我想构建一个具有名称值对的对象数组,如下所示:
output = [ {item1: userInput}, {somethingelse1: differentUserInput} ... etc.];
我试过这个没有成功:
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
,但请注意前一种情况将表达式作为键,后者作为标识符。)
var output = []
$('.grab').each(function(index) {
var obj = {}
obj[$(this).attr('name')] = $(this).val()
output.push(obj)
})
快乐的编码。
另外,请考虑使用.map()
:
var output = $('.grab').map(function() {
var obj = {}
obj[$(this).attr('name')] = $(this).val()
return obj
})
我只将表单的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;
}
结果对象类似于Object { fieldname="value", fieldname1="value1", fieldname2="value3", ...}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.