Jquery 带有.push()方法的Javascript对象

Jquery 带有.push()方法的Javascript对象,jquery,json,javascript-objects,Jquery,Json,Javascript Objects,我想使用.push()方法创建javascript对象,并创建键值对。 我试过了,但不起作用 $("input[name^=ang_nama]").each(function() { arr_nama.push($(this).attr('id'):$(this).val()); }); 有什么解决办法吗?试试看 var obj = {}; obj[$(this).attr('id')] = $(this).val(); arr_nama.push(obj); 你似乎想要这个: var

我想使用
.push()
方法创建javascript对象,并创建
键值对。
我试过了,但不起作用

$("input[name^=ang_nama]").each(function() {
   arr_nama.push($(this).attr('id'):$(this).val());
});
有什么解决办法吗?

试试看

var obj = {};
obj[$(this).attr('id')] = $(this).val();
arr_nama.push(obj);

你似乎想要这个:

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

  • 当您可以使用
    this.id时,不要使用
    $(this.attr('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();
});

试试这个,边推边加上花括号

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

“当您可以使用this.id时,不要使用$(this.attr('id')@yes,但这只是因为它是一个
输入
。对于某些元素,它的行为并不完全相同,这就是我不愿意更改它的原因。不,在JavaScript中不能这样做。