Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
for in-loop-变量中包含什么-javascript_Javascript_Google Maps_Variables - Fatal编程技术网

for in-loop-变量中包含什么-javascript

for in-loop-变量中包含什么-javascript,javascript,google-maps,variables,Javascript,Google Maps,Variables,我经常使用PHP,现在我正在慢慢学习javascript。我正在为一些谷歌地图标记设置zIndex。我正在使用for-in循环。我希望变量“I”包含一个我可以用来设置zIndex的数字,但如果我这样做,它会破坏代码,并且标记不会显示在地图上。如果我使用数字,代码就会起作用。如果我将一个数字输入一个变量并使用该变量,代码也会工作。所以我可以做到这一点,但我想了解为什么使用I变量不起作用。 当我将I输出到div中时,它显示数字1,2,3,4,5,6,7 for (var i in data.resu

我经常使用PHP,现在我正在慢慢学习javascript。我正在为一些谷歌地图标记设置zIndex。我正在使用for-in循环。我希望变量“I”包含一个我可以用来设置zIndex的数字,但如果我这样做,它会破坏代码,并且标记不会显示在地图上。如果我使用数字,代码就会起作用。如果我将一个数字输入一个变量并使用该变量,代码也会工作。所以我可以做到这一点,但我想了解为什么使用
I
变量不起作用。 当我将
I
输出到div中时,它显示数字1,2,3,4,5,6,7

for (var i in data.results) { 
    var myLatlng = new google.maps.LatLng(data.results[i].latitude,data.results[i].longitude);

    markers[i] = new StyledMarker({styleIcon:new StyledIcon(StyledIconTypes.BUBBLE,
        {
            color:"bbbbbb",
            text:data.results[i].id
        }),
        position:myLatlng,
        zIndex: 1,                             
        map:map
    });

    google.maps.event.addListener(markers[i], 'mouseover', function ()
    {
        this.setOptions({zIndex:100});
    });
    google.maps.event.addListener(markers[i], 'mouseout', function ()
    {
        this.setOptions({zIndex:1});
    });
}


您正在通过
数据中的属性进行循环。results

for in loop将通过data.results的键进行循环。如果希望使用i作为索引,则应使用常规for循环,如下所示:

for (var i = 0; i < data.results.length; i++) {
  // some code using data.results[i];
}
for(var i=0;i
希望这就是您想要的解释类型:

当您使用
for in
循环时,您会得到对象的键[就像其他答案所说的那样]。这些键与常规
for
循环的整数索引之间的区别在于,对象键的类型始终为
string

如果运行此简单循环:

var test = {
    1: 'a',
    2: 'b',
    3: 'c'
}

for (var i in test) {
    console.log(typeof i, i);
}
您将获得以下输出:

string 1
string 2
string 3
由于您对编程并不陌生,您可能知道需要一个整数来用于数组的索引,这是
数据的数据类型。我假设是results

这是一个你需要的箱子


希望这是有帮助的

我明白你在说什么,爱德华·赫奇斯。那么,它为什么会在代码中的所有其他变量中工作,比如data.results[i]、latitude、data.results[i]、longitude、markers[i]以及它还打印数字呢?我不知道任何对象中都包含什么样的数据。我为您使用的语法链接了文档。这并不难,只要读一读就知道了。在中为…使用
时,您正在遍历对象属性。您可以在这里阅读更多内容:我理解您所说的jontewks,我将使用您建议的循环,但它如何在代码中的所有其他变量中工作,例如data.results[I]、latitude、data.results[I]、longitude、markers[I],它还打印数字?