如何创建动态命名的JavaScript对象属性
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", ...}
相关文章:
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 循环遍历以数组为值的Javascript对象
- 从ajax请求中获取javascript对象
- 如何从对象的原型方法访问JavaScript对象属性
- 将XML转换为普通的旧JavaScript对象
- 通过引用传递JavaScript对象
- javascript对象操作:根据指定条件选择属性
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 如何在异步函数中使用javascript对象
- 临时Javascript对象
- 如何在ASP中为用户控件添加Javascript对象网
- 使用数组向下搜索Javascript对象
- Rails将JavaScript对象存储到Model的有效方式
- JavaScript对象不是从原型链继承的
- 如何创建具有默认值的JavaScript对象字段?(AngularJS模型相关)
- SetInterval在javascript对象中表现怪异
- Javascript 对象和 this 关键字
- 如何在不知道关键字的情况下访问javascript对象值
- 在 JavaScript 对象中设置要使用的运算符的属性
- 如何搜索JavaScript对象并更改值