0

キー値タイプのシナリオとして配列を使用しようとしていますが、すべての値が「未定義」で始まるという例外で動作しています。これは、最初の割り当てが += 演算子であることが原因だと思いますが、解決方法がわかりません。

これは、多くの文字列連結を取り除いたコードです....

   var phasehtml = {};
        $.each(json, function (i, item) {
            phasehtml[item.Phase] += 'item:'+item.ID;
        });

基本的に、文字列を適切なキーに追加しようとしています....

4

3 に答える 3

3

既に ID がある場合にのみ ID を追加するようにコードを変更できます。

var phasehtml = {};
$.each(json, function (i, item) {
   // Use the existing value for the phase, or an empty string that we can append to
   var existingValue = (phasehtml.hasOwnProperty(item.Phase) ? phasehtml[item.Phase] : "");
   phasehtml[item.Phase] = existingValue + 'item:' + item.ID; 
});

これは、フェーズごとに「item:1item:2」という形式の追加リストを phasehtml に含めることを前提としています。

于 2013-04-01T18:04:28.577 に答える
0

投稿した配列は空です。

var phasehtml = {};

次のステートメント phasehtml[item.Phase] が「未定義」と評価されているのが原因のようです。

于 2013-04-01T18:16:06.707 に答える
0

うーん、

問題が発生しました。

コードで、以前に定義されていない値を追加しようとしているため、このエラーが発生します。

コードでは、追加する変数を初期化していません。

だからこれを試してください:

  var phasehtml = {};
    $.each(json, function (i, item) {
        phasehtml[item.Phase] = "";
        phasehtml[item.Phase] += 'item:'+item.ID;
    });

この最初にいくつかの値を割り当てます。ここは空白で、その配列のインデックスを使用します。

于 2013-04-01T18:19:26.553 に答える