0

この質問をしなければならないような気がしますが、私の人生ではそれを見つけることができません。サッカーのプレーごとのデータのオブジェクトの配列があります。配列は実際にはオブジェクトの 1 つです。各オブジェクトは、フットボールの試合の特定のプレー中に発生するすべてのデータをカプセル化します。これが私のJSONオブジェクトです:

    var playsToAdd = {
    "遊ぶ":
    [
     {"クォーター":""}、
     {"ドライブ":""}、
     {"下":""}、
     {"fieldPos":""},
     {"yardsToGo":""},
     {"yardsGained":""},
     {"playType":""},
     {"playResult":""},
     {"ボールサイド":""},
     {"oForm":""},
     {"dForm":""},
     {"scoreFSU":""},
     {"scoreOp":""},
     {"プレイサイド":""},
     {"addToDB":""},
     {「プレーヤー」:
      [
       {"名前":""}、
       {"位置":""}
      ]
     }
    ]
   };

ここで、オブジェクトにデータを追加しようとします

for(l=0;l<plays.length;l++)
   {
    playsToAdd.play[l].quarter=plays[l].quarter;
    playsToAdd.play[l].drive=plays[l].drive;
    playsToAdd.play[l].down=plays[l].down;
    playsToAdd.play[l].fieldPos=plays[l].fieldPos;
    playsToAdd.play[l].yardsToGo=plays[l].yardsToGo;
    playsToAdd.play[l].yardsGained=plays[l].yardsGained;
    playsToAdd.play[l].playType=plays[l].playType;
    playsToAdd.play[l].playResult=plays[l].playResult;
    playsToAdd.play[l].ballSide=plays[l].ballSide;
    playsToAdd.play[l].oForm=plays[l].oForm;
    playsToAdd.play[l].dForm=plays[l].dForm;
    playsToAdd.play[l].scoreFSU=plays[l].scoreFSU;
    playsToAdd.play[l].scoreOp=plays[l].scoreOp;
    playsToAdd.play[l].playSide=plays[l].playSide;
    playsToAdd.play[l].addToDB=plays[l].addToDB;
    for(m=0;m<plays[l].players.length;m++)
    {
     //playsToAdd[l].players[m].position=plays[l].players[m][1];
     //playsToAdd[l].players[m].name=plays[l].players[m][0];
     playsToAdd.play[l].players[m].name="test";
    }
   }

プレイヤーのピースにたどり着くまで、すべてうまくいっているようです。私は実際にオブジェクトをコメントアウトして、それが問題ではないことを確認しました。Unable to get value of the property '0': object is null or undefinedに関してエラーが発生しplaysToAdd.play[l].players[m].name="test";ます。このサイトや他のサイトを見回しましたが、私の問題に当てはまるものは見つかりませんでした。どんな助けでも大歓迎です

4

2 に答える 2

3

問題は、現在、playsToAdd各オブジェクトが四半期、ドライブなどの1つのプロパティを含むオブジェクトの配列であることです.

代わりに、オブジェクトの配列にする必要があります。各オブジェクトには、クォーター、ドライブなどのプレイのすべてのプロパティが含まれています。

JSON 構造は次のようになります。

var playsToAdd = {
    "play":
    [
     {
       "quarter":"",
       "drive":"",
       "down":"",
       "fieldPos":"",
       "yardsToGo":"",
       "yardsGained":"",
       "playType":"",
       "playResult":"",
       "ballSide":"",
       "oForm":"",
       "dForm":"",
       "scoreFSU":"",
       "scoreOp":"",
       "playSide":"",
       "addToDB":"",
       "players":
      [
       {"name":"", "position":""},
       {"name":"", "position":""},
       ...
      ]
     }
    ]
   };

このようにして、次のようにデータにアクセス/設定できます。

playsToAdd.play[x].quarter = 'xyz';

playsToAdd.play[x].players[y].name = 'xyz';

于 2012-08-30T02:50:15.850 に答える
0

そのループを実行すると、playsToAdd.play[l].playersまだ定義されていません。

オブジェクトのコピーを作成しようとしている場合は、コピーするだけです。

playsToAdd = plays.slice(0);

playsこれにより、配列の正確なコピーが作成されます。とはいえ、入れ子になった配列がコピーされているか参照されているかはわかりません。この件で問題が発生した場合はお知らせください。さらにサポートさせていただきます。

于 2012-08-30T02:49:04.373 に答える