循环体内console.log数组 长度与length属性不一样

clipboard.png

这是我在循环体内输出的一个二维数组,意思是一个时间段内每分钟一条记录的集合,但是记录集合时间不连续,我在循环体内部找到间断的范围并补上记录,代码如下


    
    var Timer = (function(){
        var Timer = [];
        for(var i=30;i<60;i++){
            if(i<10){
                var time = "09:0" +i;
            }else{
                var time = "09:" +i;
            }
            Timer.push(time);
        }
        for(i=10;i<21;i++){
            for(var m=0;m<60;m++){
                if(m<10){
                    if(i<10){
                        time = "0" + i + ":0" + m;
                    }else{
                        time = i + ":0" + m;
                    }
                }else{
                    if(i<10){
                        time = "0" + i + ":" + m;
                    }else{
                        time = i + ":" + m;
                    }
                }
                Timer.push(time);
            }
        }
        return Timer;
    })();
    
    

var linedata = [
            ['10:20', 18.4, 18.58, 600, 20, 16, 18],
            ['10:21', 18.56, 18.25, 600, 20, 16, 18],
            ['10:22', 18.3, 18.22, 600, 20, 16, 18],
            ['10:23', 18.18, 18.69, 600, 20, 16, 18],
            ['10:24', 18.42, 18.29, 600, 20, 16, 18],
            ['10:25', 18.26, 18.19, 600, 20, 16, 18],
            ['10:26', 18.33, 18.07, 600, 20, 16, 18],
            ['10:27', 18.08, 18.04, 600, 20, 16, 18],
            ['10:28', 17.96, 17.86, 700, 20, 16, 18],
            ['10:29', 17.85, 17.81, 700, 20, 16, 18],
            ['10:30', 17.79, 17.93, 800, 20, 16, 18],
            ['11:02', 17.78, 17.83, 500, 20, 16, 18],
            ['11:03', 17.84, 17.9, 500, 20, 16, 18],
            ['11:04', 17.97, 18.36, 1000, 20, 16, 18],
            ['11:05', 18.3, 18.57, 1000, 20, 16, 18],
            ['11:06', 18.53, 18.68, 1000, 20, 16, 18],
            ['11:09', 18.75, 19.08, 1000, 20, 16, 18],
            ['11:10', 18.85, 18.64, 1000, 20, 16, 18],
            ['11:11', 18.64, 18.44, 1000, 20, 16, 18],
            ['11:12', 18.55, 18.27, 1000, 20, 16, 18],
            ['11:13', 18.13, 18.14, 1000, 20, 16, 18],
            ['11:16', 18.01, 18.1, 1000, 20, 16, 18],
            ['11:17', 18.2, 18.14, 1000, 20, 16, 18],
            ['11:18', 18.23, 18.16, 1000, 20, 16, 18],
            ['11:19', 18.08, 18.2, 1000, 20, 16, 18],
               ['11:20', 18.15, 18.25, 1000, 20, 16, 18]
        ];
        var standardTime = "11:20";
        
        function replenishData(linedata,standardTime){
            var time = standardTime.split(":");
            var newLineData = [];
            var aa = 0;
            for(var i=0;i<linedata.length;i++){
                if(linedata[i][0]==Timer[aa]){
                    newLineData.push(linedata[i]);
                    aa++;
                }else{
                    //var newSubData = [];
                    for(var m=0;m<Timer.length;m++){
                        if(linedata[i][0]==Timer[m]){
                            var endIndex = m;
                            break;
                        }
                    }
                    if(linedata[i-1]==undefined){
                        var beginIndex = -1;
                    }else{
                        for(m=0;m<Timer.length;m++){
                            if(linedata[i-1][0]==Timer[m]){
                                var beginIndex = m;
                                break;
                            }
                        }
                    }
                    aa = endIndex+1;
                    console.log(newLineData);
                    console.log(Timer[beginIndex]+","+Timer[endIndex]);
                }
            }
        }
        replenishData(linedata,standardTime);
        
        

Timer是我手动生成的一个连续时间集合,linedata是模拟获取到的不连续数据,但是在输出console.log时长度与length属性不一样,并且我还成功取到了数据间隔的区间,这个是什么原因,如果我继续写补齐数据代码,数组里面的顺序会按照时间大小排列么?
如果有相关的文章也请贴上链接,不慎感激。

阅读 3.8k
4 个回答

点开之后,看到那个蓝色的i了吗? 把鼠标挪上去。
搜一下出来的那句话,你会看到这个答案

补齐数据功能已经写上,数据不会乱,但是为什么长度与length不一样的问题还没有找打

其实就是因为你修改了数组,因为是地址引用,原来的数组也变了,但是长度显示的原来的,只因为浏览器他就是这么显示的.

console.log是显示的事当前状态,单击相应console后的数组,得到的是function执行完时候的数组

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题