我觉得这个问题必须要问,但对于我的生活,我找不到它。我有一系列通过游戏数据进行足球比赛的对象。该数组实际上是一个对象。每个对象都封装了足球比赛中任何给定比赛期间发生的所有数据。这是我的JSON对象:
var playsToAdd = { "play": [ {"quarter":""}, {"drive":""}, {"down":""}, {"fieldPos":""}, {"yardsToGo":""}, {"yardsGained":""}, {"playType":""}, {"playResult":""}, {"ballSide":""}, {"oForm":""}, {"dForm":""}, {"scoreFSU":""}, {"scoreOp":""}, {"playSide":""}, {"addToDB":""}, {"players": [ {"name":""}, {"position":""} ] } ] };
这是我尝试向对象添加数据的地方
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";
。我环顾了这个网站和其他人,但没有发现任何与我的问题有关的事情。非常感谢任何帮助
答案 0 :(得分: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';
等
答案 1 :(得分:0)
当您运行该循环时,尚未定义playsToAdd.play[l].players
。
如果您正在尝试创建对象的副本,则可以复制它:
playsToAdd = plays.slice(0);
这会创建plays
数组的精确副本。也就是说,我不确定嵌套数组是否被复制或引用。如果您对此有疑问,请告诉我,我将能够进一步提供帮助。