我正在创建pos对象并将它们插入到数组中。
以下是非常好的代码。
var pos1={lat:25,long:56};
var pos2={lat:100,long:200};
var pos3={lat:-63,long:-29};
var objects=[];
objects.push(pos1);
objects.push(pos2);
objects.push(pos3);
console.log(objects[0].lat+","+objects[0].long);
console.log(objects[1].lat+","+objects[1].long);
console.log(objects[2].lat+","+objects[2].long);
输出
然后我尝试在循环中使用随机数插入一些对象。正是在这一点上它产生了错误。
未捕获的TypeError:Pos对象在循环之外
var locations=[];
var pos={lat:0,long:0}; //Here post object is outside the loop
size=10;
for(var i=1;i<=size;i++){
var x=Math.floor(1+Math.random()*10);
var y=Math.floor(1+Math.random()*10);
pos.lat=x;
pos.long=y;
locations.push(pos);
}
for(var i=1;i<=size;i++){
console.log(locations[i].lat+","+locations[i].long);
}
输出
未捕获的TypeError:当Pos对象在循环内时
var locations=[];
size=10;
for(var i=1;i<=size;i++){
var pos={lat:0,long:0}; //pos object inside the loop
var x=Math.floor(1+Math.random()*10);
var y=Math.floor(1+Math.random()*10);
pos.lat=x;
pos.long=y;
locations.push(pos);
}
for(var i=1;i<=size;i++){
console.log(locations[i].lat+","+locations[i].long);
}
输出
我不知道为什么我会收到这些错误。我的理解是,当访问位置数组时,我需要将其关联到pos对象吗?
答案 0 :(得分:3)
i
应该从0
这样开始:
for(var i=0;i < size;i++){
console.log(locations[i].lat+","+locations[i].long);
}
array
索引从zero
开始,以小于1的大小结束。
答案 1 :(得分:2)
编程数组索引从零开始 所以当大小为5时,例如索引是0,1,2,3,4 ..看看最后一个索引是4 ..
在你的情况下你迭代到<=size
试图访问不存在的元素,这就是你得到错误的原因
i = 0 ; i < 10
应该修复它
答案 2 :(得分:1)
从0开始的数组索引,因此i
必须从0开始,并且只应<
而不是<=
var locations = [];
size = 10;
for (var i = 1; i <= size; i++) {
var pos = {
lat: 0,
long: 0
}; //pos object inside the loop
var x = Math.floor(1 + Math.random() * 10);
var y = Math.floor(1 + Math.random() * 10);
pos.lat = x;
pos.long = y;
locations.push(pos);
}
for (var i = 0; i < size; i++) {
console.log(i, locations[i].lat + "," + locations[i].long);
}
&#13;