3

.push()Method と createを使用して 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 に答える