我在下面的代码中遇到问题,试图将数据推送到具有数组的JSON结构中。在以下代码中,“ M”是可以添加到的数组,x是整数值。我正在尝试使用push将许多条目放入“ P”数组中,但是出现以下错误:
未捕获的TypeError:无法读取未定义的属性“ push”
var x = 3;
var title = "A Title"
var JSON_local_dat = {"M":[{"T":title, "P":[]}]};
for(var i=0; i < x; i++)
{
var d = {"Something": 50};
JSON_local_dat.M.P.push(d);
console.log(JSON.stringify(JSON_local_dat.M.P));
}
我也曾尝试删除双引号,但出现相同的错误。 如果我改为尝试将数据推入“ M”,则表示成功,但未成功。 无法看到为什么我不应该对P进行同样的操作,这就是我想要去的数据。
(顺便说一句,由于空间有限,我使用单个字母作为名称,我用来将数据传递到的API将我限制为4000个字符。)
答案 0 :(得分:0)
M
是Array。使用M[0]
获取数组中的第一个条目,该条目恰好是具有属性P
的对象。
x = 3;
var JSON_local_dat = {"M":[{"T":"title", "P":[]}]};
for(var i=0; i < x; i++)
{
var d = {"Something": 50};
JSON_local_dat.M[0].P.push(d);
console.log(JSON.stringify(JSON_local_dat.M[0].P));
}
答案 1 :(得分:0)
P
是M
数组中第一个对象的属性,而不是M
本身的属性。您需要选择数组的第一项才能到达对象(而不是数组本身)才能访问P
:
var x = 3;
var title = "A Title"
var JSON_local_dat = {"M":[{"T":title, "P":[]}]};
for(var i=0; i < x; i++)
{
var d = {"Something": 50};
JSON_local_dat.M[0].P.push(d);
}
console.log(JSON.stringify(JSON_local_dat.M));
如果您想提高效率,可以只选择P
数组一次,而不是每次迭代都选择一次:
var x = 3;
var title = "A Title"
var P = [];
var JSON_local_dat = {"M":[{"T":title, P}]};
for(var i=0; i < x; i++)
{
var d = {"Something": 50};
P.push(d);
}
console.log(JSON.stringify(JSON_local_dat.M));
此外,您那里没有JSON-您只有一个普通的Javascript对象。参见There's no such thing as a "JSON Object"
答案 2 :(得分:0)
您的json(JSON_local_dat)并不是您想要的方式。您将M设为一个数组(其第一个元素具有P属性)。 更改为-
checkboxes
答案 3 :(得分:0)
要修复代码,请使用M[0]
,因为它是一个数组。
JSON_local_dat.M[0].P.push(d);