2

次のように、javascriptJSON配列の先頭にキーと値のペアを追加したいと思います。

var temp = new Array();
temp = {
          ['LABEL_ID': 10, 'LABEL_TYPE': A3],
          ['LABEL_ID': 17, 'LABEL_TYPE': A6]
       }

私がやりたいこと :

var temp = new Array();
temp = {
          'PAPER': A80 
               ['LABEL_ID': 10, 'LABEL_TYPE': A3],
               ['LABEL_ID': 17, 'LABEL_TYPE': A6]
       }

手伝っていただけませんか?

ここで編集 するのは私のコードです:

// returns paper type from selected grid line
var ppt     = Ext.getCmp('labelType').getValue();

// returns selected grid rows
var rows    = Ext.getCmp('labelGrids').getSelectionModel().getSelection();


// here is my array that I want to add ppt variable value to existing array, then I will convert this to a JSON array
for (var i = 0; i < count; i++)
{
   prints[i] = {'LABEL_ID': rows[i].data.LABEL_ID, 'LABEL_TYPE':rows[i].data.LABEL_TYPE}
}

pptその理由は、サーバー側でこのレコードが必要なだけで、配列の先頭に値を追加するためです。したがって、すべての行で繰り返したくありません!

4

5 に答える 5

2

あなたがそんなに傾いているなら、私はこれがあなたのために行く方法であると言うでしょう。

あなたはjavascript構文がそのまま無効です。「label」オブジェクトを配列に追加し、さらにtemp、作成したばかりの配列を上書きする新しいオブジェクトに割り当てます。

配列に追加する場合は、メソッドを使用する必要があります.push()

このような:

labelArray.push({'LABEL_ID': '10', 'LABEL_TYPE': 'A3'});
labelArray.push({'LABEL_ID': '17', 'LABEL_TYPE': 'A6'});

そうでなければ、これは正しい方向へのポインタかもしれません

var labelArray = new Array({'LABEL_ID': 10, 'LABEL_TYPE': A3},
               {'LABEL_ID': 17, 'LABEL_TYPE': A6});
var paper = {

    papertype : A80,
    labels : labelArray

}

しかし、それは良くもきれいでもありませんが、それはあなたのために働きます。

于 2012-12-12T13:40:59.837 に答える
2

さて、私はあなたがあなたの質問でこのスクリプトを意味したことを望みます:

編集した質問に答える簡単な方法は、別のオブジェクトでラップすることです。

var temp = new Array();
temp = [
  {"LABEL_ID": 10, "LABEL_TYPE": "A3"},
  {"LABEL_ID": 17, "LABEL_TYPE": "A6"}
       ]
 // wrap temp in another object;

 var obj = {};
 obj.PAPER = A80;
 obj.Data = temp;
 //And convert to json.
 console.log(JSON.stingify(obj));

出力:

{"PAPER":"A80","Data":[{"LABEL_ID":10,"LABEL_TYPE":"A3"},{"LABEL_ID":17,"LABEL_TYPE":"A6"}]}

お役に立てれば。関数を呼び出すと、必要なプロパティがオブジェクトに追加されます

var temp = new Array();
temp = [
  {"LABEL_ID": 10, "LABEL_TYPE": "A3"},
  {"LABEL_ID": 17, "LABEL_TYPE": "A6"}
       ]

  addPaperProperty(temp, 'PAPER', ['AA','BB']);

  function addPaperProperty(currentArray, newPropertyField, newPropertyArr){
    var newArray = [];
    var i=0;
    $(temp).each(function(){
       this[newPropertyField] = newPropertyArr[i++];
      newArray.push(this);
    });
    console.log(newArray);
    return newArray;
  }

そして結果は

[{LABEL_ID: 10, LABEL_TYPE: "A3", PAPER: "AA"},
{LABEL_ID: 17, LABEL_TYPE: "A6", PAPER: "BB"}]
于 2012-12-12T13:54:37.557 に答える
1

これは配列ではありません。このような変数のタイプは、キーと値のペアを定義するため、ハッシュテーブルと呼ばれます。

実際の答えの前にいくつかの重要なポイント:

  • キーと値はどちらも任意のタイプにすることができますが、キーをプレーンな文字列にすることをお勧めします。
  • 値は、プレーン配列や別のハッシュテーブルを含め、何でもかまいません。
  • 値のないキーだけを持つことはできません。

したがって、コードを有効にするために、次のようなことができます。

temp = {
    'PAPER': 'A80', 
    'LABELS': [{'LABEL_ID': 10, 'LABEL_TYPE': 'A3'}, 
               {'LABEL_ID': 17, 'LABEL_TYPE': 'A6'}]
};

これにより、通常のキーと値のペアが追加され、次に値がハッシュテーブルの配列であるキーが追加されます。

特定のラベルにアクセスするには、次のようなコードを使用できます。

var id = temp["LABELS"][1]["LABEL_ID"];

JavaScriptでは大文字と小文字が区別されるため、キー名では大文字と小文字が重要であり、意味はundefinedtemp["paper"]を返すことに注意してください。

ライブテストケース

于 2012-12-12T13:34:38.020 に答える
1

オブジェクトはどこでも無効に見えます。外側の角かっこは正方形である必要があり[ ]ます。本当に配列にしたい場合は、内側の角かっこは{ }オブジェクトであるため、中かっこで囲みます。

また、とが以前に定義したバリアルベでない限りA3、それらは文字列であるため、アポストロフィで囲む必要があります。A6

var temp = [
    {'LABEL_ID': 10, 'LABEL_TYPE': 'A3'},
    {'LABEL_ID': 17, 'LABEL_TYPE': 'A6'}
]

さて、配列にその追加されたプロパティが必要な場合は、おそらく次のようにするのが最善です。

var temp = [
    {'PAPER': 'A80'},
    {'LABEL_ID': 10, 'LABEL_TYPE': 'A3'},
    {'LABEL_ID': 17, 'LABEL_TYPE': 'A6'}
]

または、temp代わりにオブジェクトを作成します。

var temp = {
    'PAPER':'A80',
    'labels':[
        {'LABEL_ID': 10, 'LABEL_TYPE': 'A3'},
        {'LABEL_ID': 17, 'LABEL_TYPE': 'A6'}
    ]
}

(オブジェクトでは、常にkey:value関係がありますが、配列では、関係はありません。

于 2012-12-12T13:37:44.063 に答える
-1

こんにちは、これは有効なJSONオブジェクトです

temp = {
      'PAPER': A80, 'LIST' : {
           ['LABEL_ID': 10, 'LABEL_TYPE': A3],
           ['LABEL_ID': 17, 'LABEL_TYPE': A6]
       }
   }
于 2012-12-12T13:38:24.030 に答える