首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建动态命名的JavaScript对象属性?

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

Stack Overflow用户
提问于 2011-11-11 01:50:36
回答 2查看 15.4K关注 0票数 6

这是我所拥有的

代码语言:javascript
运行
复制
<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,我想构建一个具有名称值对的对象数组,如下所示:

代码语言:javascript
运行
复制
output = [ {item1: userInput}, {somethingelse1: differentUserInput} ... etc.];

我已经尝试过了,但没有成功:

代码语言:javascript
运行
复制
var output = new Array();
$('.grab').each( function(index) { 
    output.push({$(this).attr('name'): $(this).val()} );
});

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-11 01:58:18

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

代码语言:javascript
运行
复制
var output = []
$('.grab').each(function(index) { 
    var obj = {}
    obj[$(this).attr('name')] = $(this).val()
    output.push(obj)
})

祝你编码愉快。

另外,考虑使用.map()

代码语言:javascript
运行
复制
var output = $('.grab').map(function() { 
    var obj = {}
    obj[$(this).attr('name')] = $(this).val()
    return obj
})
票数 19
EN

Stack Overflow用户

发布于 2017-01-17 05:18:06

我只接受表单的id作为此函数的参数:

代码语言:javascript
运行
复制
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", ...}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8084003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档