google映射-for in loop-变量javascript中包含的内容

google maps - for in loop - what is contained in the variable - javascript

本文关键字:包含 javascript 变量 映射 -for in loop- google      更新时间:2023-09-26

我用PHP做了很多工作,现在我正在慢慢学习javascript。我正在为一些谷歌地图标记设置zIndex。我在循环中使用for。我希望变量"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});
    });
}

希望这就是您想要的解释类型:

当你使用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

由于您不是编程新手,您可能知道您需要一个整数来用于数组的索引,我假设它是data.results的数据类型。

这是一个Fiddle,以备不时之需。

希望这会有所帮助!

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in

您正在循环使用data.results中的属性。

循环中的for将遍历data.results的键。如果你想使用i作为索引,你应该使用一个正则的for循环,如下所示:

for (var i = 0; i < data.results.length; i++) {
  // some code using data.results[i];
}