3

我想使用.push()Method 创建 javascript 对象并创建Key Value Pair. 我已经尝试过了,但它不起作用。

$("input[name^=ang_nama]").each(function() {
   arr_nama.push($(this).attr('id'):$(this).val());
});

有什么解决办法吗?

4

3 回答 3

8

你似乎想要这个:

var arr_nama = [];
$("input[name^=ang_nama]").each(function() {
   var obj = {};
   obj[this.id] = $(this).val();
   arr_nama.push(obj);
});

一些观察:

  • $(this).attr('id')可以用的时候不要用this.id
  • 您必须先初始化数组,然后再推送它
  • 您不能直接创建具有动态属性名称的对象文字,您必须先创建对象

另一个更清洁的解决方案是

var arr_nama = $("input[name^=ang_nama]").map(function() {
   var obj = {};
   obj[this.id] = $(this).val();
   return obj;
}).get();

示范

请注意,这会创建一个数组。如果您想要的是一个独特的对象,请使用:

var arr_nama = {};
$("input[name^=ang_nama]").each(function() {
   arr_nama[this.id] = $(this).val();
});

示范

于 2013-06-03T11:59:35.553 回答
1

尝试

var obj = {};
obj[$(this).attr('id')] = $(this).val();
arr_nama.push(obj);
于 2013-06-03T11:59:30.570 回答
0

试试这个,在推的时候加上花括号

$("input[name^=ang_nama]").each(function() {
     arr_nama.push( { $(this).attr('id'):$(this).val() } );
});
于 2013-06-03T12:07:07.383 回答