0

我觉得这个问题必须被问到,但对于我的生活,我找不到它。我有一个按播放数据进行足球比赛的对象数组。数组实际上是对象之一。每个对象都封装了足球比赛中任何给定比赛期间发生的所有数据。这是我的 JSON 对象:

    var playToAdd = {
    “玩”:
    [
     {“四分之一”:””},
     {“驾驶”:””},
     {“向下”:””},
     {"fieldPos":""},
     {"yardsToGo":""},
     {"yardsGained":""},
     {"playType":""},
     {"playResult":""},
     {"ballSide":""},
     {"oForm":""},
     {"dForm":""},
     {"scoreFSU":""},
     {"scoreOp":""},
     {"playSide":""},
     {"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是一个对象数组,每个对象包含一个属性,即季度、驱动器等。

相反,它应该是一个对象数组,其中每个对象包含一个游戏的所有属性,即季度、驱动器等。

您的 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 回答