Javascript can';推入2d数组后是否无法访问对象元素?
这是来自Ajax调用的Json数据Javascript can';推入2d数组后是否无法访问对象元素?,javascript,arrays,json,google-maps,Javascript,Arrays,Json,Google Maps,这是来自Ajax调用的Json数据 { "VehicleID": 1, "Tracks": [{ "TrackID": 1, "trackPoints": [{ "lat": 36.25514030456543, "lng": 33.501180542295344 }, { "lat": 36.255140304562, "lng": 3
{
"VehicleID": 1,
"Tracks": [{
"TrackID": 1,
"trackPoints": [{
"lat": 36.25514030456543,
"lng": 33.501180542295344
}, {
"lat": 36.255140304562,
"lng": 33.5011805422952
}, {
"lat": 36.255140304561,
"lng": 33.5011805422951
}]
}, {
"TrackID": 1,
"trackPoints": [{
"lat": 31.25514030456543,
"lng": 31.501180542295344
}, {
"lat": 31.255140304562,
"lng": 31.5011805422952
}, {
"lat": 31.255140304561,
"lng": 31.5011805422951
}]
}]
}
使用谷歌地图
两个for循环,用于迭代轨迹和每条轨迹中的点,
我正在将我所做的大部分工作打印到控制台中
for (var i = 0; i < numtracks; i++) {
var numPoints = result.Tracks[i].trackPoints.length;
arr[i] = new Array(numPoints); //creating 2d array for points
console.log("*********Array number " + i + " Got created" + "and its lenght is " + arr[i].length + " *******************");
console.log("Lenght of track #" + i + " Points => " + numPoints);
console.log("array lenghth for Points track #" + i + " => " + arr[i].length);
将数据推送到arr[i]后
arr[i].push(p);
//when acessing arr[i][j].lat();is not recgnising it
console.log("track #" + i + " , point #" + j + "pushed into array x= " + arr[i][j].lat() + " ,y=" + arr[i][j]);
这是控制台的输出
array lenghth for tracks => 2 trackss:96
Tracks lenght : 2 trackss:97
*********Array number 0 Got createdand its lenght is 3 ******************* trackss:110
Lenght of track #0 Points => 3 trackss:111
array lenghth for Points track #0 => 3 trackss:112
x= 36.25514030456543 for #0 Point trackss:116
y= 33.501180542295344 for #0 Point trackss:117
p befor push lat for the 36.25514030456543 trackss:119
p befor push lng for the 33.50118054229529 trackss:120
Uncaught TypeError: Cannot read property 'lat' of undefined
尝试如下初始化
arr
:
arr[i]=[]代码>
然后添加p
对象,如下所示:
arr[i][j]=p
使用var arr=new array(N)创建数组时
使用N
未定义元素创建数组。因此,假设N=3
您的数组看起来像[未定义,未定义,未定义]
。推到该数组将附加新值,因此arr.push(“Lorem”)
将生成一个数组,看起来像[undefined,undefined,undefined,“Lorem”]
并且访问元素arr[0]
将返回undefined
,而不是的“Lorem”
arr[i].push(p);
//when acessing arr[i][j].lat();is not recgnising it
console.log("track #" + i + " , point #" + j + "pushed into array x= " + arr[i][j].lat() + " ,y=" + arr[i][j]);
array lenghth for tracks => 2 trackss:96
Tracks lenght : 2 trackss:97
*********Array number 0 Got createdand its lenght is 3 ******************* trackss:110
Lenght of track #0 Points => 3 trackss:111
array lenghth for Points track #0 => 3 trackss:112
x= 36.25514030456543 for #0 Point trackss:116
y= 33.501180542295344 for #0 Point trackss:117
p befor push lat for the 36.25514030456543 trackss:119
p befor push lng for the 33.50118054229529 trackss:120
Uncaught TypeError: Cannot read property 'lat' of undefined