我正在尝试将JSON数据推送到数组中的一个数组。与我能找到的其他例子的问题不同之处在于,这两个数组都是由循环构建的,我认为这就是我收到的错误的原因。TypeError: Cannot call method 'push' of undefined
这里有一个我试图实现的最小示例。
var json = {origin: data.origin.name, destination: data.destination.name, trips: []};
for (var i = 0; i < data.trips.length; i++) {
var departure = data.trips[i].dep.time;
var arrival = data.trips[i].arr.time;
json.trips.push({departure: departure, arrival: arrival, nodes: []});
for (var j = 0; j < data.trips[i].legs.length; j++) {
json.trips.nodes.push({test: 'test'});
}
}我尝试创建的输出应该如下所示。
{
origin: origin,
destination: destination,
trips: [
{
departure: departure,
arrival: arrival,
nodes: [
{test: test},
{test: test},
{test: test}
]
},
{
departure: departure,
arrival: arrival,
nodes: [
{test: test},
{test: test},
{test: test}
]
}
]
}当然,测试节点是没有意义的,但是不应该以这种方式添加它们吗?
发布于 2014-08-07 07:01:17
这行代码:
json.trips.nodes.push({test: 'test'});应该是:
json.trips[i].nodes.push({test: 'test'});发布于 2014-08-07 07:02:20
json.trips.nodes确实是未定义的。我相信你想把它添加到trip循环中的新项目中?
var json = {origin: data.origin.name, destination: data.destination.name, trips: []};
for (var i = 0; i < data.trips.length; i++) {
var newNode = {
departure: data.trips[i].dep.time,
arrival: data.trips[i].arr.time,
nodes: []
};
for (var j = 0; j < data.trips[i].legs.length; j++) {
newNode.nodes.push({test: 'test'});
}
json.trips.push(newNode);
}发布于 2014-08-07 07:24:11
var json = {origin: data.origin.name, destination: data.destination.name, trips: []};
for (var i = 0; i < data.trips.length; i++) {
var departure = data.trips[i].dep.time;
var arrival = data.trips[i].arr.time;
var trip = {departure: departure, arrival: arrival, nodes: []}
for (var j = 0; j < data.trips[i].legs.length; j++) {
trip.nodes.push({test: 'test'});
}
json.trips.push(trip);
}https://stackoverflow.com/questions/25171630
复制相似问题