首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript数组2维for循环

JavaScript数组2维for循环
EN

Stack Overflow用户
提问于 2016-11-01 19:08:41
回答 4查看 183关注 0票数 1

我想用for循环定义一个二维数组对象...我的问题我认为我的对象并没有真正被处理,下面是代码:

代码语言:javascript
运行
复制
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二维数组的方式有问题,但我仍然不知道如何修复它。感谢您的帮助。

EN

回答 4

Stack Overflow用户

发布于 2016-11-01 19:30:28

有一些事情你可以用你的代码来优化。首先,你必须正确地初始化你的循环。然后在循环中,最好是静态赋值,而不是每次只检查一个实现。这应该会优化你的代码。旧的位置发布可以使以下代码更优化。

代码语言:javascript
运行
复制
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];
    }                
}
票数 2
EN

Stack Overflow用户

发布于 2016-11-01 19:20:11

我认为问题在于索引始终是一个一维数组,您在for循环中声明了‘newLoc’,但在主体中使用了‘i

代码语言:javascript
运行
复制
var newLoc = [];

// loop with 
for (var i = 0; i < locations.length; i++){
    //Create the second dimention
    newLoc[i] = [];
            if(i == 0) {
                    ...
票数 1
EN

Stack Overflow用户

发布于 2016-11-01 19:20:18

我注意到一件事,在您的for循环中,您编写了

代码语言:javascript
运行
复制
for (index = 0, i < locations.length; i++)

而不是

代码语言:javascript
运行
复制
for (index = 0; i < locations.length; i++)

请注意;

所以,在所有的循环中应该是

代码语言:javascript
运行
复制
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];
                }
            }
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40358865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档