javascript - 同样是数组,为什么chrome控制台打印的结果不一样?

查看:146
本文介绍了javascript - 同样是数组,为什么chrome控制台打印的结果不一样?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

如图所示,

两个一样的数组,为什么在chrome上,一个显示{},一个不显示,
该问题导致我怀疑这两组数据到底是不是一样的。。。

生成数据1的代码如下

//数组-经纬度
var geoCoordMap = {
    "齐齐哈尔":[123.97,47.33],
    "盐城":[120.13,33.38],
    "赤峰":[118.87,42.28],
    "青岛":[120.33,36.07]
}
//处理函数
var convertData = function (data) {
            var res = [];
            //遍历数组
            for (var i = 0; i < data.length; i++) {
                //按数组名查询数组-经纬度
                var geoCoord = geoCoordMap[data[i].name];
                //如果匹配
                if (geoCoord) {
                    //在新数组中插入对象
                    res.push({
                        name: data[i].name,//数组的name
                        value: geoCoord.concat(data[i].value)//连接
                    });
                }
            }
            return res;
    };

生成数据2的代码如下

var token='XIxs9YC0wXa86WfWQGBM89qyohwGoXkx';
var url="http://api.map.baidu.com/geocoder/v2/?output=json&ak="+token+'&address=';

//该数组为两个方法共同使用,以作测试
var _test = [
    {name: "齐齐哈尔", value: 9},
    {name: "盐城", value: 12},
    {name: "赤峰", value: 12},
    {name: "青岛", value: 12}];

var charData=[];

for(var k = 0;k<_test.length;k++){
    var m = _test[k].name;
    var j = _test[k].value;
    (function(m,j) {
        $.getJSON(url+m+'&callback=?',function(res){
            if(res.status===0){
                loc=res.result.location;
                charData.push({
                    name:m,
                    value: [parseFloat((loc.lng).toFixed(2)),parseFloat((loc.lat).toFixed(2)),j]
                });
            }
            else{
                alert('百度没有找到地址信息');
            }
        })
    })(m,j)
}

两组数据都是通过push空数组生成的,都在value上放置了一个含有三项数值的新数组,但是为什么打印结果不一样呢?
难道他们真的不一样?

解决方案

看不到代码里console.log,不知道你的打印时机,打印时机的不同,结果是有点怪异的,一般来说数组的话,你在打印它的时候,它的个数会显示和内容会简单的显示在第一行,但是点开箭头,才是数组的实时数据

我给你看个截图吧

第一次打印的时候a才两个元素,但是后面第二次打印之前我给a加了个元素,结果就不一样了。

点开的是实时数据,第一行显示的是当时的数据。

补充一点,那就是箭头实时数据点开的那一刻也是有讲究的,如果在a还没增加元素前提前点开了箭头,展示的数据,就固定在了当时点开时数组的实时数据……不好表达,看动图吧。第一个console跟后面几个的区别

这篇关于javascript - 同样是数组,为什么chrome控制台打印的结果不一样?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆