我想用for循环定义一个二维数组对象...我的问题我认为我的对象并没有真正被处理,下面是代码:
var newLoc = [];
var index;
for (index = 0, i < locations.length; i++){
if(i == 0) {
newLoc[i][0] = locations[i][1];
newLoc[i][1] = locations[i][2];
}
else {
if(locations[i][8] == locations[i-1][8]){
newLoc[i-1][0] = (locations[i][1] + locations[i-1][1])/2;
newLoc[i-1][1] = (locations[i][2] + locations[i-2][1])/2;
}
else{
newLoc[i][0] = locations[i][1];
newLoc[i][1] = locations[i][2];
}
}
}
位置数组本身是存储新数组(newLoc)数据的旧数组。位置数据是存在的,它们是坐标、纬度和经度。我认为我的for循环表单或声明newLoc二维数组的方式有问题,但我仍然不知道如何修复它。感谢您的帮助。
发布于 2016-11-01 19:30:28
有一些事情你可以用你的代码来优化。首先,你必须正确地初始化你的循环。然后在循环中,最好是静态赋值,而不是每次只检查一个实现。这应该会优化你的代码。旧的位置发布可以使以下代码更优化。
var newLoc = [];
if(locations.length > 0){
for(var j = 0; j < 1; ++j) {
newLoc[j] = [ ];
newLoc[j][0] = locations[0][1];
newLoc[j][1] = locations[0][2];
}
}
for (var i = 1, i < locations.length; i++){
if(locations[i][8] == locations[i-1][8]){
newLoc[i-1][0] = (locations[i][1] + locations[i-1][1])/2;
newLoc[i-1][1] = (locations[i][2] + locations[i-2][1])/2;
}
else{
newLoc[i][0] = locations[i][1];
newLoc[i][1] = locations[i][2];
}
}
发布于 2016-11-01 19:20:11
我认为问题在于索引始终是一个一维数组,您在for循环中声明了‘newLoc’,但在主体中使用了‘i
var newLoc = [];
// loop with
for (var i = 0; i < locations.length; i++){
//Create the second dimention
newLoc[i] = [];
if(i == 0) {
...
发布于 2016-11-01 19:20:18
我注意到一件事,在您的for
循环中,您编写了
for (index = 0, i < locations.length; i++)
而不是
for (index = 0; i < locations.length; i++)
请注意;
所以,在所有的循环中应该是
for (index = 0; i < locations.length; i++){
if(i == 0) {
newLoc[i][0] = locations[i][1];
newLoc[i][1] = locations[i][2];
}
else {
if(locations[i][8] == locations[i-1][8]){
newLoc[i-1][0] = (locations[i][1] + locations[i-1][1])/2;
newLoc[i-1][1] = (locations[i][2] + locations[i-2][1])/2;
}
else{
newLoc[i][0] = locations[i][1];
newLoc[i][1] = locations[i][2];
}
}
}
https://stackoverflow.com/questions/40358865
复制相似问题